summaryrefslogtreecommitdiff
path: root/internal/queries
diff options
context:
space:
mode:
authorT <t@tjp.lol>2025-08-13 13:04:05 -0600
committerT <t@tjp.lol>2025-08-13 13:42:43 -0600
commit389b72e55b04ccfc02b04eb81cb8f7bb7a5c8b59 (patch)
treebe3015b2c7db90cddfc85d3e77ddc76213485494 /internal/queries
parent29c6581e08d0fe98433eff218de7701b51a6861c (diff)
history filtering
Diffstat (limited to 'internal/queries')
-rw-r--r--internal/queries/queries.sql.go89
1 files changed, 52 insertions, 37 deletions
diff --git a/internal/queries/queries.sql.go b/internal/queries/queries.sql.go
index 0a7d134..0408942 100644
--- a/internal/queries/queries.sql.go
+++ b/internal/queries/queries.sql.go
@@ -377,6 +377,58 @@ func (q *Queries) GetContractor(ctx context.Context) (Contractor, error) {
return i, err
}
+const getFilteredTimeEntries = `-- name: GetFilteredTimeEntries :many
+select id, start_time, end_time, description, client_id, project_id, billable_rate from time_entry
+where start_time >= ?1
+ and (?2 is null or start_time <= ?2)
+ and (?3 is null or client_id = ?3)
+ and (?4 is null or project_id = ?4)
+order by start_time desc
+`
+
+type GetFilteredTimeEntriesParams struct {
+ StartTime time.Time
+ EndTime interface{}
+ ClientID interface{}
+ ProjectID interface{}
+}
+
+func (q *Queries) GetFilteredTimeEntries(ctx context.Context, arg GetFilteredTimeEntriesParams) ([]TimeEntry, error) {
+ rows, err := q.db.QueryContext(ctx, getFilteredTimeEntries,
+ arg.StartTime,
+ arg.EndTime,
+ arg.ClientID,
+ arg.ProjectID,
+ )
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []TimeEntry
+ for rows.Next() {
+ var i TimeEntry
+ if err := rows.Scan(
+ &i.ID,
+ &i.StartTime,
+ &i.EndTime,
+ &i.Description,
+ &i.ClientID,
+ &i.ProjectID,
+ &i.BillableRate,
+ ); err != nil {
+ return nil, err
+ }
+ items = append(items, i)
+ }
+ if err := rows.Close(); err != nil {
+ return nil, err
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}
+
const getHighestInvoiceNumber = `-- name: GetHighestInvoiceNumber :one
select cast(coalesce(max(number), 0) as integer) as max_number
from invoice
@@ -681,43 +733,6 @@ func (q *Queries) GetProjectByNameAndClient(ctx context.Context, arg GetProjectB
return i, err
}
-const getRecentTimeEntries = `-- name: GetRecentTimeEntries :many
-select id, start_time, end_time, description, client_id, project_id, billable_rate from time_entry
-where start_time >= ?1
-order by start_time desc
-`
-
-func (q *Queries) GetRecentTimeEntries(ctx context.Context, startTime time.Time) ([]TimeEntry, error) {
- rows, err := q.db.QueryContext(ctx, getRecentTimeEntries, startTime)
- if err != nil {
- return nil, err
- }
- defer rows.Close()
- var items []TimeEntry
- for rows.Next() {
- var i TimeEntry
- if err := rows.Scan(
- &i.ID,
- &i.StartTime,
- &i.EndTime,
- &i.Description,
- &i.ClientID,
- &i.ProjectID,
- &i.BillableRate,
- ); err != nil {
- return nil, err
- }
- items = append(items, i)
- }
- if err := rows.Close(); err != nil {
- return nil, err
- }
- if err := rows.Err(); err != nil {
- return nil, err
- }
- return items, nil
-}
-
const getTimeEntryById = `-- name: GetTimeEntryById :one
select id, start_time, end_time, description, client_id, project_id, billable_rate from time_entry
where id = ?1