diff options
author | Joris | 2025-02-07 11:45:22 +0100 |
---|---|---|
committer | Joris | 2025-02-07 11:45:22 +0100 |
commit | b324803fe11b52b28ac2dc459504f904a48a79d4 (patch) | |
tree | 1d916303b3b262dc09c38a3c6f9abbb4a9a4e4be /src/db/migrations | |
parent | f7afa9cf50a9459f41146ca5cb009eab69b76c5f (diff) |
Use strict tables
Diffstat (limited to 'src/db/migrations')
-rw-r--r-- | src/db/migrations/01-init.sql | 10 | ||||
-rw-r--r-- | src/db/migrations/02-primary-key-question-responses.sql | 20 | ||||
-rw-r--r-- | src/db/migrations/03-drop-deck-read.sql | 1 | ||||
-rw-r--r-- | src/db/migrations/04-strict-tables.sql | 18 |
4 files changed, 49 insertions, 0 deletions
diff --git a/src/db/migrations/01-init.sql b/src/db/migrations/01-init.sql new file mode 100644 index 0000000..29d70ed --- /dev/null +++ b/src/db/migrations/01-init.sql @@ -0,0 +1,10 @@ +CREATE TABLE IF NOT EXISTS cards ( + question VARCHAR PRIMARY KEY, + responses VARCHAR NOT NULL, + state VARCHAR NOT NULL, + created TIMESTAMP NOT NULL, + updated TIMESTAMP NULL, + deleted TIMESTAMP NULL, + deck_read TIMESTAMP NOT NULL, + ready TIMESTAMP NOT NULL +) diff --git a/src/db/migrations/02-primary-key-question-responses.sql b/src/db/migrations/02-primary-key-question-responses.sql new file mode 100644 index 0000000..cb7df21 --- /dev/null +++ b/src/db/migrations/02-primary-key-question-responses.sql @@ -0,0 +1,20 @@ +/* Allows to use ON CONFLICT on (question, responses) when inserting a card. */ + +CREATE TABLE IF NOT EXISTS cards_copy ( + question VARCHAR NOT NULL, + responses VARCHAR NOT NULL, + state VARCHAR NOT NULL, + created TIMESTAMP NOT NULL, + updated TIMESTAMP NULL, + deleted TIMESTAMP NULL, + deck_read TIMESTAMP NOT NULL, + ready TIMESTAMP NOT NULL, + PRIMARY KEY (question, responses) +); + +INSERT INTO cards_copy (question, responses, state, created, updated, deleted, deck_read, ready) + SELECT question, responses, state, created, updated, deleted, deck_read, ready FROM cards; + +DROP TABLE cards; + +ALTER TABLE cards_copy RENAME TO cards; diff --git a/src/db/migrations/03-drop-deck-read.sql b/src/db/migrations/03-drop-deck-read.sql new file mode 100644 index 0000000..1ca23d1 --- /dev/null +++ b/src/db/migrations/03-drop-deck-read.sql @@ -0,0 +1 @@ +ALTER TABLE cards DROP COLUMN deck_read; diff --git a/src/db/migrations/04-strict-tables.sql b/src/db/migrations/04-strict-tables.sql new file mode 100644 index 0000000..9ce4ce9 --- /dev/null +++ b/src/db/migrations/04-strict-tables.sql @@ -0,0 +1,18 @@ +ALTER TABLE "cards" RENAME TO "cards_non_strict"; + +CREATE TABLE IF NOT EXISTS "cards" ( + question TEXT NOT NULL, + responses TEXT NOT NULL, + state TEXT NOT NULL, + created INTEGER NOT NULL, /* TIMESTAMP */ + updated INTEGER NULL, /* TIMESTAMP */ + deleted INTEGER NULL, /* TIMESTAMP */ + ready INTEGER NOT NULL, /* TIMESTAMP */ + PRIMARY KEY (question, responses) +) STRICT; + +INSERT INTO cards (question, responses, state, created, updated, deleted, ready) + SELECT question, responses, state, created, updated, deleted, ready + FROM cards_non_strict; + +DROP TABLE cards_non_strict; |