diff --git a/src/backend/db/migrations/4_add-created-at-on-tasks.sql b/src/backend/db/migrations/4_add-created-at-on-tasks.sql new file mode 100644 index 00000000..56f93d86 --- /dev/null +++ b/src/backend/db/migrations/4_add-created-at-on-tasks.sql @@ -0,0 +1,7 @@ +-- Each task should have a created_at date so that we can sort by assigned date +-- NOTE: This relies on the assigned date never changing; if the app allows changes, we will likely want create a dedicated assigned_on date in addition to (or instead of) this column +ALTER TABLE task +ADD COLUMN created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(); + +-- Add index to allow easy queries of tasks by date +CREATE INDEX idx_created_at ON task(created_at); diff --git a/src/backend/db/zapatos/schema.d.ts b/src/backend/db/zapatos/schema.d.ts index 0d734ec7..b49ab1f6 100644 --- a/src/backend/db/zapatos/schema.d.ts +++ b/src/backend/db/zapatos/schema.d.ts @@ -2019,6 +2019,12 @@ declare module 'zapatos/schema' { */ benchmark_id: string | null; /** + * **task.created_at** + * - `timestamptz` in database + * - `NOT NULL`, default: `now()` + */ + created_at: Date; + /** * **task.due_date** * - `timestamptz` in database * - Nullable, no default @@ -2057,6 +2063,12 @@ declare module 'zapatos/schema' { */ benchmark_id: string | null; /** + * **task.created_at** + * - `timestamptz` in database + * - `NOT NULL`, default: `now()` + */ + created_at: db.TimestampTzString; + /** * **task.due_date** * - `timestamptz` in database * - Nullable, no default @@ -2095,6 +2107,12 @@ declare module 'zapatos/schema' { */ benchmark_id?: string | db.Parameter | db.SQLFragment | db.ParentColumn | db.SQLFragment | db.SQLFragment | db.ParentColumn>; /** + * **task.created_at** + * - `timestamptz` in database + * - `NOT NULL`, default: `now()` + */ + created_at?: (db.TimestampTzString | Date) | db.Parameter<(db.TimestampTzString | Date)> | db.SQLFragment | db.ParentColumn | db.SQLFragment | db.SQLFragment | db.ParentColumn>; + /** * **task.due_date** * - `timestamptz` in database * - Nullable, no default @@ -2133,6 +2151,12 @@ declare module 'zapatos/schema' { */ benchmark_id?: string | db.Parameter | null | db.DefaultType | db.SQLFragment; /** + * **task.created_at** + * - `timestamptz` in database + * - `NOT NULL`, default: `now()` + */ + created_at?: (db.TimestampTzString | Date) | db.Parameter<(db.TimestampTzString | Date)> | db.DefaultType | db.SQLFragment; + /** * **task.due_date** * - `timestamptz` in database * - Nullable, no default @@ -2171,6 +2195,12 @@ declare module 'zapatos/schema' { */ benchmark_id?: string | db.Parameter | null | db.DefaultType | db.SQLFragment | db.SQLFragment | null | db.DefaultType | db.SQLFragment>; /** + * **task.created_at** + * - `timestamptz` in database + * - `NOT NULL`, default: `now()` + */ + created_at?: (db.TimestampTzString | Date) | db.Parameter<(db.TimestampTzString | Date)> | db.DefaultType | db.SQLFragment | db.SQLFragment | db.DefaultType | db.SQLFragment>; + /** * **task.due_date** * - `timestamptz` in database * - Nullable, no default diff --git a/src/backend/routers/para.ts b/src/backend/routers/para.ts index 4f331d96..78661095 100644 --- a/src/backend/routers/para.ts +++ b/src/backend/routers/para.ts @@ -83,6 +83,7 @@ export const para = router({ "task.due_date", "task.seen", "task.trial_count", + "task.created_at", eb .selectFrom("trial_data") diff --git a/src/pages/benchmarks/index.tsx b/src/pages/benchmarks/index.tsx index 79842d30..2bd3750d 100644 --- a/src/pages/benchmarks/index.tsx +++ b/src/pages/benchmarks/index.tsx @@ -122,13 +122,9 @@ function Benchmarks() { Filter - { - // TODO: replace simple sort pill w/this sort pill placeholder - /* - TODO: replace simple sort pill w/this sort pill placeholder - - Sort Pill Placeholder - ` if dropdown needed) */} + {/* simple sort pill POC (see TODO above) */}