summaryrefslogtreecommitdiff
path: root/internal/actions/clients.go
diff options
context:
space:
mode:
authorT <t@tjp.lol>2025-08-13 23:09:07 -0600
committerT <t@tjp.lol>2025-08-13 23:09:38 -0600
commit99b4888709b8b9dc435bff476cb73210e91017cc (patch)
tree3045f926be8832d2f1865ffad53319c2b5b39a1a /internal/actions/clients.go
parent5c076e605185a09b1e570f9aa3c5ddb784ace0f3 (diff)
edit clients and projects
Diffstat (limited to 'internal/actions/clients.go')
-rw-r--r--internal/actions/clients.go31
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