From 233640502c9bab36339ed1c09e945274a075b3c2 Mon Sep 17 00:00:00 2001 From: Marco Date: Thu, 24 Apr 2025 09:04:10 +0200 Subject: [PATCH] Add length constraints to SQLite text columns to match MySQL/Postgres --- Database/SQLite.sql | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Database/SQLite.sql b/Database/SQLite.sql index f8c5b96..df2e931 100644 --- a/Database/SQLite.sql +++ b/Database/SQLite.sql @@ -6,9 +6,9 @@ PRAGMA foreign_keys = OFF; CREATE TABLE "users" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, - "email" TEXT NOT NULL COLLATE NOCASE, - "password" TEXT NOT NULL COLLATE BINARY, - "username" TEXT DEFAULT NULL COLLATE NOCASE, + "email" TEXT NOT NULL COLLATE NOCASE CHECK (LENGTH("email") <= 249), + "password" TEXT NOT NULL COLLATE BINARY CHECK (LENGTH("password") <= 255), + "username" TEXT DEFAULT NULL COLLATE NOCASE CHECK (LENGTH("username") <= 100), "status" INTEGER NOT NULL CHECK ("status" >= 0) DEFAULT 0, "verified" INTEGER NOT NULL CHECK ("verified" >= 0 AND "verified" <= 1) DEFAULT 0, "resettable" INTEGER NOT NULL CHECK ("resettable" >= 0 AND "resettable" <= 1) DEFAULT 1, @@ -23,7 +23,7 @@ CREATE TABLE "users_2fa" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0), "mechanism" INTEGER NOT NULL CHECK ("mechanism" >= 0), - "seed" TEXT DEFAULT NULL COLLATE BINARY, + "seed" TEXT DEFAULT NULL COLLATE BINARY CHECK (LENGTH("seed") <= 255), "created_at" INTEGER NOT NULL CHECK ("created_at" >= 0), "expires_at" INTEGER CHECK ("expires_at" >= 0) DEFAULT NULL, CONSTRAINT "users_2fa_user_id_mechanism_uq" UNIQUE ("user_id", "mechanism") @@ -32,9 +32,9 @@ CREATE TABLE "users_2fa" ( CREATE TABLE "users_confirmations" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0), - "email" TEXT NOT NULL COLLATE NOCASE, - "selector" TEXT NOT NULL COLLATE BINARY, - "token" TEXT NOT NULL COLLATE BINARY, + "email" TEXT NOT NULL COLLATE NOCASE CHECK (LENGTH("email") <= 249), + "selector" TEXT NOT NULL COLLATE BINARY CHECK (LENGTH("selector") <= 16), + "token" TEXT NOT NULL COLLATE BINARY CHECK (LENGTH("token") <= 255), "expires" INTEGER NOT NULL CHECK ("expires" >= 0), CONSTRAINT "users_confirmations_selector_uq" UNIQUE ("selector") ); @@ -46,8 +46,8 @@ CREATE TABLE "users_otps" ( "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0), "mechanism" INTEGER NOT NULL CHECK ("mechanism" >= 0), "single_factor" INTEGER NOT NULL CHECK ("single_factor" >= 0 AND "single_factor" <= 1) DEFAULT 0, - "selector" TEXT NOT NULL COLLATE BINARY, - "token" TEXT NOT NULL COLLATE BINARY, + "selector" TEXT NOT NULL COLLATE BINARY CHECK (LENGTH("selector") <= 24), + "token" TEXT NOT NULL COLLATE BINARY CHECK (LENGTH("token") <= 255), "expires_at" INTEGER CHECK ("expires_at" >= 0) DEFAULT NULL ); CREATE INDEX "users_otps_user_id_mechanism_ix" ON "users_otps" ("user_id", "mechanism"); @@ -56,8 +56,8 @@ CREATE INDEX "users_otps_selector_user_id_ix" ON "users_otps" ("selector", "user CREATE TABLE "users_remembered" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user" INTEGER NOT NULL CHECK ("user" >= 0), - "selector" TEXT NOT NULL COLLATE BINARY, - "token" TEXT NOT NULL COLLATE BINARY, + "selector" TEXT NOT NULL COLLATE BINARY CHECK (LENGTH("selector") <= 24), + "token" TEXT NOT NULL COLLATE BINARY CHECK (LENGTH("token") <= 255), "expires" INTEGER NOT NULL CHECK ("expires" >= 0), CONSTRAINT "users_remembered_selector_uq" UNIQUE ("selector") ); @@ -66,15 +66,15 @@ CREATE INDEX "users_remembered_user_ix" ON "users_remembered" ("user"); CREATE TABLE "users_resets" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user" INTEGER NOT NULL CHECK ("user" >= 0), - "selector" TEXT NOT NULL COLLATE BINARY, - "token" TEXT NOT NULL COLLATE BINARY, + "selector" TEXT NOT NULL COLLATE BINARY CHECK (LENGTH("selector") <= 20), + "token" TEXT NOT NULL COLLATE BINARY CHECK (LENGTH("token") <= 255), "expires" INTEGER NOT NULL CHECK ("expires" >= 0), CONSTRAINT "users_resets_selector_uq" UNIQUE ("selector") ); CREATE INDEX "users_resets_user_expires_ix" ON "users_resets" ("user", "expires"); CREATE TABLE "users_throttling" ( - "bucket" TEXT PRIMARY KEY NOT NULL COLLATE BINARY, + "bucket" TEXT PRIMARY KEY NOT NULL COLLATE BINARY CHECK (LENGTH("bucket") <= 44), "tokens" REAL NOT NULL CHECK ("tokens" >= 0), "replenished_at" INTEGER NOT NULL CHECK ("replenished_at" >= 0), "expires_at" INTEGER NOT NULL CHECK ("expires_at" >= 0)