feat(habits): add opt-in partial count carryover with daily reset defaults

This commit is contained in:
syntaxbullet
2026-09-04 09:11:11 +02:00
parent e9cc591576
commit 9a7180ce78
9 changed files with 775 additions and 14 deletions

View File

@@ -33,7 +33,7 @@ export const habitRevisions = sqliteTable('habit_revisions', {
export const habitDays = sqliteTable('habit_days', {
id: integer('id').primaryKey({ autoIncrement: true }), habitId: text('habit_id').notNull().references(() => habits.id),
revisionId: integer('revision_id').notNull().references(() => habitRevisions.id), date: text('date').notNull(),
timezone: text('timezone').notNull(), endsAt: integer('ends_at').notNull(), count: integer('count').notNull().default(0), done: integer('done', { mode: 'boolean' }).notNull().default(false),
timezone: text('timezone').notNull(), endsAt: integer('ends_at').notNull(), countSet: integer('count_set', { mode: 'boolean' }).notNull().default(false), count: integer('count').notNull().default(0), done: integer('done', { mode: 'boolean' }).notNull().default(false),
}, t => [index('habit_days_lookup_idx').on(t.habitId, t.date, t.revisionId)]);
export const taskOccurrences = sqliteTable('task_occurrences', {
id: text('id').primaryKey(), dayId: integer('day_id').notNull().references(() => habitDays.id), taskId: text('task_id').notNull(), name: text('name').notNull(),