diff options
author | T <t@tjp.lol> | 2025-08-13 23:09:07 -0600 |
---|---|---|
committer | T <t@tjp.lol> | 2025-08-13 23:09:38 -0600 |
commit | 99b4888709b8b9dc435bff476cb73210e91017cc (patch) | |
tree | 3045f926be8832d2f1865ffad53319c2b5b39a1a /internal/actions/clients.go | |
parent | 5c076e605185a09b1e570f9aa3c5ddb784ace0f3 (diff) |
edit clients and projects
Diffstat (limited to 'internal/actions/clients.go')
-rw-r--r-- | internal/actions/clients.go | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/internal/actions/clients.go b/internal/actions/clients.go index 1a99d59..10e8e7d 100644 --- a/internal/actions/clients.go +++ b/internal/actions/clients.go @@ -22,9 +22,8 @@ func (a *actions) CreateClient(ctx context.Context, name, email string, billable } var billableRateParam sql.NullInt64 - if billableRate != nil && *billableRate > 0 { - rate := int64(*billableRate * 100) // Convert dollars to cents - billableRateParam = sql.NullInt64{Int64: rate, Valid: true} + if billableRate != nil { + billableRateParam = sql.NullInt64{Int64: int64(*billableRate * 100), Valid: true} } client, err := a.queries.CreateClient(ctx, queries.CreateClientParams{ @@ -39,6 +38,32 @@ func (a *actions) CreateClient(ctx context.Context, name, email string, billable return &client, nil } +func (a *actions) EditClient(ctx context.Context, id int64, name, email string, billableRate *float64) (*queries.Client, error) { + finalName, finalEmail := parseNameAndEmail(name, email) + + var emailParam sql.NullString + if finalEmail != "" { + emailParam = sql.NullString{String: finalEmail, Valid: true} + } + + var rateParam sql.NullInt64 + if billableRate != nil { + rateParam = sql.NullInt64{Int64: int64(*billableRate * 100), Valid: true} + } + + client, err := a.queries.UpdateClient(ctx, queries.UpdateClientParams{ + Name: finalName, + Email: emailParam, + BillableRate: rateParam, + ID: id, + }) + if err != nil { + return nil, fmt.Errorf("failed to update client: %w", err) + } + + return &client, nil +} + // FindClient finds a client by name or ID func (a *actions) FindClient(ctx context.Context, nameOrID string) (*queries.Client, error) { // Parse as ID if possible, otherwise use 0 |