package actions import ( "context" "punchcard/internal/queries" ) // Actions provides high-level business operations for time tracking type Actions interface { // Timer operations PunchIn(ctx context.Context, client, project, description string, billableRate *float64) (*TimerSession, error) PunchInMostRecent(ctx context.Context, description string, billableRate *float64) (*TimerSession, error) PunchOut(ctx context.Context) (*TimerSession, error) // Client operations CreateClient(ctx context.Context, name, email string, billableRate *float64) (*queries.Client, error) FindClient(ctx context.Context, nameOrID string) (*queries.Client, error) // Project operations CreateProject(ctx context.Context, name, client string, billableRate *float64) (*queries.Project, error) FindProject(ctx context.Context, nameOrID string) (*queries.Project, error) } // New creates a new Actions instance func New(q *queries.Queries) Actions { return &actions{queries: q} } // actions implements the Actions interface type actions struct { queries *queries.Queries }