62 lines
1.7 KiB
SQL
62 lines
1.7 KiB
SQL
-- +migrate Up
|
|
CREATE TABLE entries (
|
|
id TEXT PRIMARY KEY,
|
|
start_time INTEGER NOT NULL,
|
|
end_time INTEGER,
|
|
auto_stopped INTEGER NOT NULL DEFAULT 0,
|
|
note TEXT,
|
|
day_key TEXT NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
deleted_at INTEGER
|
|
);
|
|
CREATE INDEX idx_entries_day ON entries(day_key);
|
|
|
|
CREATE TABLE closed_days (
|
|
day_key TEXT PRIMARY KEY,
|
|
start_time INTEGER,
|
|
end_time INTEGER,
|
|
worked_ms INTEGER NOT NULL,
|
|
kind TEXT NOT NULL,
|
|
closed_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE closed_weeks (
|
|
week_key TEXT PRIMARY KEY,
|
|
expected_ms INTEGER NOT NULL,
|
|
worked_ms INTEGER NOT NULL,
|
|
delta_ms INTEGER NOT NULL,
|
|
closed_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE settings_history (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
effective_from TEXT NOT NULL,
|
|
hours_per_week REAL NOT NULL,
|
|
workdays_mask INTEGER NOT NULL DEFAULT 31,
|
|
timezone TEXT NOT NULL DEFAULT 'UTC',
|
|
created_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE sync_log (
|
|
entity TEXT NOT NULL,
|
|
entity_id TEXT NOT NULL,
|
|
op TEXT NOT NULL,
|
|
version INTEGER NOT NULL,
|
|
payload TEXT NOT NULL,
|
|
PRIMARY KEY (entity, entity_id, version)
|
|
);
|
|
|
|
-- seed default settings
|
|
INSERT INTO settings_history (effective_from, hours_per_week, workdays_mask, timezone, created_at)
|
|
VALUES ('2000-01-01', 40.0, 31, 'UTC', unixepoch() * 1000);
|
|
|
|
-- +migrate Down
|
|
DROP TABLE IF EXISTS sync_log;
|
|
DROP TABLE IF EXISTS settings_history;
|
|
DROP TABLE IF EXISTS closed_weeks;
|
|
DROP TABLE IF EXISTS closed_days;
|
|
DROP INDEX IF EXISTS idx_entries_day;
|
|
DROP TABLE IF EXISTS entries;
|