core

package
v0.0.0-...-ae0e552 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 14, 2025 License: MIT Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ChoreTypeOneshot       = "oneshot"
	ChoreTypeInterval      = "interval"
	ChoreTypeDate          = "date"
	ChoreTypeDateRepeating = "date-repeating"
)

Variables

This section is empty.

Functions

func APIChoreListIcsFile

func APIChoreListIcsFile(db *sql.DB, view *View, apiKey string) http.Handler

func ChoreAddHandler

func ChoreAddHandler(db *sql.DB, view *View) http.Handler

func ChoreCompleteHandler

func ChoreCompleteHandler(db *sql.DB, view *View) http.Handler

func ChoreDeleteHandler

func ChoreDeleteHandler(db *sql.DB) http.Handler

func ChoreEditPage

func ChoreEditPage(db *sql.DB, view *View) http.Handler

func ChoreExpediteHandler

func ChoreExpediteHandler(db *sql.DB, view *View) http.Handler

func ChoreListAPIMux

func ChoreListAPIMux(db *sql.DB, view *View, apiKey string) *http.ServeMux

func ChoreListChartDataHandler

func ChoreListChartDataHandler(db *sql.DB, view *View) http.Handler

func ChoreListChartPage

func ChoreListChartPage(db *sql.DB, view *View) http.Handler

func ChoreListCreateInviteHandler

func ChoreListCreateInviteHandler(db *sql.DB, view *View, inviteStore *InviteStore) http.Handler

func ChoreListDeleteInviteHandler

func ChoreListDeleteInviteHandler(db *sql.DB, view *View, inviteStore *InviteStore) http.Handler

func ChoreListEditPage

func ChoreListEditPage(db *sql.DB, view *View) http.Handler

func ChoreListLeaveHandler

func ChoreListLeaveHandler(db *sql.DB, view *View) http.Handler

func ChoreListMux

func ChoreListMux(db *sql.DB, view *View, inviteStore *InviteStore) *http.ServeMux

func ChoreListNewChorePage

func ChoreListNewChorePage(view *View) http.Handler

func ChoreListNewHandler

func ChoreListNewHandler(db *sql.DB) http.Handler

func ChoreListNewPage

func ChoreListNewPage(view *View) http.Handler

func ChoreListPage

func ChoreListPage(db *sql.DB, view *View) http.Handler

func ChoreListRender

func ChoreListRender(ctx context.Context, db *sql.DB, view *View, w http.ResponseWriter, r *http.Request, today date.Date, userID, choreListID string) error

func ChoreListUpdateHandler

func ChoreListUpdateHandler(db *sql.DB, view *View) http.Handler

func ChoreListsPage

func ChoreListsPage(db *sql.DB, view *View) http.Handler

func ChoreListsRender

func ChoreListsRender(ctx context.Context, db *sql.DB, view *View, w http.ResponseWriter, r *http.Request, userID string) error

func ChoreMux

func ChoreMux(db *sql.DB, view *View) http.Handler

func ChoreSnoozeHandler

func ChoreSnoozeHandler(db *sql.DB, view *View) http.Handler

func ChoreUpdateHandler

func ChoreUpdateHandler(db *sql.DB, view *View) http.Handler

func Coalesce

func Coalesce[T comparable](a, b T) T

func Complete

func Complete(ctx context.Context, db *sql.DB, userID, id string, occurredAt date.Date) error

func Delete

func Delete(ctx context.Context, db *sql.DB, id string) error

func Expedite

func Expedite(ctx context.Context, db *sql.DB, today date.Date, userID, id string) error

func GenerateInvite

func GenerateInvite(ctx context.Context, db *sql.DB) (string, error)

func GetMigratedDB

func GetMigratedDB(ctx context.Context, dir fs.FS, path string, conn string) (*sql.DB, error)

func LoginPage

func LoginPage(view *View) http.Handler

func Mux

func Mux(db *sql.DB, view *View, authConfig auth.Config, apiKey string) http.Handler

func NewId

func NewId() string

func Run

func Run(ctx context.Context, args []string, stdin io.Reader, stdout io.Writer, stderr io.Writer, getEnv func(string) string, getwd func() (string, error)) error

func RunCfg

func RunCfg(ctx context.Context, stdout io.Writer, cfg Config, public fs.FS, tmplProv templ.TemplateProvider) error

func SettingsPage

func SettingsPage(view *View, db *sql.DB) http.Handler

func Snooze

func Snooze(ctx context.Context, db *sql.DB, today date.Date, userID, id string, snoozeFor date.Duration) error

Types

type AuthProvider

type AuthProvider struct {
	// contains filtered or unexported fields
}

func NewAuthProvider

func NewAuthProvider(db *sql.DB) *AuthProvider

func (*AuthProvider) AuthenticateUser

func (a *AuthProvider) AuthenticateUser(ctx context.Context, r *http.Request) (string, error)

type Chore

type Chore struct {
	ID             string
	Name           string
	ChoreType      string
	Link           string
	CreatedAt      date.Date
	Interval       date.Duration
	LastCompletion date.Date
	SnoozedFor     date.Duration
	ChoreListID    string
	RepeatsLeft    int64 // -1 means infinite
}

func ChoreFromDb

func ChoreFromDb(row cdb.Chore) Chore

func ChoresFromDb

func ChoresFromDb(dbChores []cdb.Chore) []Chore

func Create

func Create(ctx context.Context, db *sql.DB, today date.Date, userID string, input Input) (*Chore, error)

func Get

func Get(ctx context.Context, db cdb.DBTX, userID, id string) (*Chore, error)

func Update

func Update(ctx context.Context, db *sql.DB, prev *Chore, input Input) (*Chore, error)

func (*Chore) DurationToNext

func (c *Chore) DurationToNext() date.Duration

func (*Chore) DurationToNextFrom

func (c *Chore) DurationToNextFrom(today date.Date) date.Duration

func (Chore) IsDate

func (c Chore) IsDate() bool

func (Chore) IsDateRepeating

func (c Chore) IsDateRepeating() bool

func (Chore) IsInterval

func (c Chore) IsInterval() bool

func (Chore) IsOneshot

func (c Chore) IsOneshot() bool

func (*Chore) NextCompletion

func (c *Chore) NextCompletion() date.Date

func (*Chore) Repeats

func (c *Chore) Repeats() bool

type ChoreEditView

type ChoreEditView struct {
	*RequestDetails
	Chore     Chore
	ChoreType string
}

func (ChoreEditView) IsDate

func (c ChoreEditView) IsDate() bool

func (ChoreEditView) IsDateRepeating

func (c ChoreEditView) IsDateRepeating() bool

func (ChoreEditView) IsEdit

func (c ChoreEditView) IsEdit() bool

func (ChoreEditView) IsInterval

func (c ChoreEditView) IsInterval() bool

func (ChoreEditView) IsOneshot

func (c ChoreEditView) IsOneshot() bool

func (ChoreEditView) RepeatsValue

func (c ChoreEditView) RepeatsValue() string

type ChoreListChartView

type ChoreListChartView struct {
	*RequestDetails
	List cdb.ChoreList
}

type ChoreListDataView

type ChoreListDataView struct {
	Data []ChoreListDataViewSeries `json:"data"`
}

type ChoreListDataViewCalendar

type ChoreListDataViewCalendar struct {
	Range string `json:"range"`
}

type ChoreListDataViewSeries

type ChoreListDataViewSeries struct {
	Date  date.Date `json:"date"`
	Value int64     `json:"value"`
}

type ChoreListEditView

type ChoreListEditView struct {
	*RequestDetails
	List    cdb.ChoreList
	Members []cdb.GetChoreListMembersRow
	Invites []cdb.Invitation
}

func (ChoreListEditView) IsEdit

func (c ChoreListEditView) IsEdit() bool

type ChoreListIcsView

type ChoreListIcsView struct {
	ID     string
	Name   string
	Today  date.Date
	Chores []Chore
}

func (*ChoreListIcsView) NextCompletionOf

func (v *ChoreListIcsView) NextCompletionOf(c Chore) date.Date

type ChoreListView

type ChoreListView struct {
	*RequestDetails
	List    cdb.ChoreList
	Weekday time.Weekday
	Chores  *ListView
}

type ChoreListsView

type ChoreListsView struct {
	*RequestDetails
	ChoreLists []cdb.GetChoreListsByUserRow
}

type CompletionInput

type CompletionInput struct {
	CompletedAt date.Date `json:"completed_at"`
}

func (*CompletionInput) FromForm

func (c *CompletionInput) FromForm(r *http.Request) (err error)

type Config

type Config struct {
	Addr   string
	Watch  bool
	DbURL  string
	GenInv bool
	ApiKey string
}

type DBTokenStore

type DBTokenStore struct {
	DB *sql.DB
}

func (*DBTokenStore) DeleteSessions

func (s *DBTokenStore) DeleteSessions(ctx context.Context, userID string) error

func (*DBTokenStore) StoreSession

func (s *DBTokenStore) StoreSession(ctx context.Context, session auth.Session) error

func (*DBTokenStore) VerifySession

func (s *DBTokenStore) VerifySession(ctx context.Context, token string, now time.Time) (auth.Session, bool, error)

type HtmlTemplateProvider

type HtmlTemplateProvider struct {
	templ.TemplateProvider
}

func (*HtmlTemplateProvider) ExecuteTemplate

func (p *HtmlTemplateProvider) ExecuteTemplate(w io.Writer, name string, data interface{}) error

type Input

type Input struct {
	Name        string
	ChoreType   string
	ChoreListID string
	Interval    date.Duration
	Repeats     int64
	Link        string
	Date        date.Date
}

func (*Input) FromForm

func (i *Input) FromForm(r *http.Request) error

func (*Input) Validate

func (i *Input) Validate(prev *Chore) error

type InviteAcceptView

type InviteAcceptView struct {
	*RequestDetails
	InviteID      string
	ChoreListName string
	InviterName   string
	ExistingUser  bool
}

type InviteCreateView

type InviteCreateView struct {
	ChoreLists []cdb.GetChoreListsByUserRow
}

type InviteStore

type InviteStore struct {
	// contains filtered or unexported fields
}

func (*InviteStore) CreateInvite

func (s *InviteStore) CreateInvite(ctx context.Context, userID string, now time.Time, r *http.Request) (string, error)

func (*InviteStore) CreateInvitePage

func (s *InviteStore) CreateInvitePage(ctx context.Context, userID string, w http.ResponseWriter, r *http.Request) error

func (*InviteStore) CreateInviteWithChoreList

func (s *InviteStore) CreateInviteWithChoreList(ctx context.Context, userID, choreListID string, now time.Time, r *http.Request) (string, error)

func (*InviteStore) DeleteInviteInChoreList

func (s *InviteStore) DeleteInviteInChoreList(ctx context.Context, inviteID, choreListID string) error

func (*InviteStore) InviteAccept

func (s *InviteStore) InviteAccept(ctx context.Context, userID string, inviteID string, now time.Time, w http.ResponseWriter, r *http.Request) error

func (*InviteStore) InvitePage

func (s *InviteStore) InvitePage(ctx context.Context, userID string, inviteID string, now time.Time, w http.ResponseWriter, r *http.Request) error

type InviteView

type InviteView struct {
	InviteID      string
	ChoreListName string
}

type ListView

type ListView struct {
	Chores []Chore
	Today  date.Date
}

func NewListView

func NewListView(today date.Date, chores []Chore) *ListView

func (*ListView) Sections

func (v *ListView) Sections() []Section

type RequestDetails

type RequestDetails struct {
	// contains filtered or unexported fields
}

func (*RequestDetails) CurrPath

func (r *RequestDetails) CurrPath() string

func (*RequestDetails) PrevPath

func (r *RequestDetails) PrevPath() string

type Section

type Section struct {
	Title            string
	LatestCompletion date.Duration
	Chores           []Chore
}

func (*Section) HasChores

func (s *Section) HasChores() bool

func (*Section) IsOpen

func (s *Section) IsOpen() bool

type SettingsView

type SettingsView struct {
	*RequestDetails
	UserID         string
	Usernames      []string
	ChoreLists     []cdb.GetChoreListsByUserRow
	CreatedInvites []cdb.GetInvitationsByCreatorRow
}

type View

type View struct {
	// contains filtered or unexported fields
}

func NewView

func NewView(p templ.TemplateProvider) *View

func (*View) ChoreCreatePage

func (v *View) ChoreCreatePage(w http.ResponseWriter, r *http.Request, d ChoreEditView) error

func (*View) ChoreEditPage

func (v *View) ChoreEditPage(w http.ResponseWriter, r *http.Request, d ChoreEditView) error

func (*View) ChoreListChartData

func (v *View) ChoreListChartData(w http.ResponseWriter, r *http.Request, d *ChoreListDataView) error

func (*View) ChoreListChartPage

func (v *View) ChoreListChartPage(w http.ResponseWriter, r *http.Request, d ChoreListChartView) error

func (*View) ChoreListEditPage

func (v *View) ChoreListEditPage(w http.ResponseWriter, r *http.Request, d ChoreListEditView) error

func (*View) ChoreListIcs

func (v *View) ChoreListIcs(w http.ResponseWriter, r *http.Request, d *ChoreListIcsView) error

func (*View) ChoreListNewPage

func (v *View) ChoreListNewPage(w http.ResponseWriter, r *http.Request) error

func (*View) ChoreListPage

func (v *View) ChoreListPage(w http.ResponseWriter, r *http.Request, d ChoreListView) error

func (*View) ChoreListsPage

func (v *View) ChoreListsPage(w http.ResponseWriter, r *http.Request, d ChoreListsView) error

func (*View) ChoreModal

func (v *View) ChoreModal(w http.ResponseWriter, r *http.Request, d *Chore) error

func (*View) InviteAcceptPage

func (v *View) InviteAcceptPage(w http.ResponseWriter, r *http.Request, d InviteAcceptView) error

func (*View) InviteCreate

func (v *View) InviteCreate(w http.ResponseWriter, r *http.Request, d InviteCreateView) error

func (*View) InvitePage

func (v *View) InvitePage(w http.ResponseWriter, r *http.Request, d InviteView) error

func (*View) LoginPage

func (v *View) LoginPage(w http.ResponseWriter, r *http.Request) error

func (*View) SettingsPage

func (v *View) SettingsPage(w http.ResponseWriter, r *http.Request, d SettingsView) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL