1
0
mirror of https://github.com/delight-im/PHP-Auth.git synced 2025-08-02 14:17:26 +02:00

Improve DDL for SQLite

This commit is contained in:
Marco
2025-03-20 14:28:20 +01:00
parent e771398527
commit ea6cbf6089

View File

@@ -5,78 +5,78 @@
PRAGMA foreign_keys = OFF; PRAGMA foreign_keys = OFF;
CREATE TABLE "users" ( CREATE TABLE "users" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK ("id" >= 0), "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"email" VARCHAR(249) NOT NULL, "email" TEXT NOT NULL COLLATE NOCASE,
"password" VARCHAR(255) NOT NULL, "password" TEXT NOT NULL COLLATE BINARY,
"username" VARCHAR(100) DEFAULT NULL, "username" TEXT DEFAULT NULL COLLATE NOCASE,
"status" INTEGER NOT NULL CHECK ("status" >= 0) DEFAULT "0", "status" INTEGER NOT NULL CHECK ("status" >= 0) DEFAULT 0,
"verified" INTEGER NOT NULL CHECK ("verified" >= 0) DEFAULT "0", "verified" INTEGER NOT NULL CHECK ("verified" >= 0 AND "verified" <= 1) DEFAULT 0,
"resettable" INTEGER NOT NULL CHECK ("resettable" >= 0) DEFAULT "1", "resettable" INTEGER NOT NULL CHECK ("resettable" >= 0 AND "resettable" <= 1) DEFAULT 1,
"roles_mask" INTEGER NOT NULL CHECK ("roles_mask" >= 0) DEFAULT "0", "roles_mask" INTEGER NOT NULL CHECK ("roles_mask" >= 0) DEFAULT 0,
"registered" INTEGER NOT NULL CHECK ("registered" >= 0), "registered" INTEGER NOT NULL CHECK ("registered" >= 0),
"last_login" INTEGER CHECK ("last_login" >= 0) DEFAULT NULL, "last_login" INTEGER CHECK ("last_login" >= 0) DEFAULT NULL,
"force_logout" INTEGER NOT NULL CHECK ("force_logout" >= 0) DEFAULT "0", "force_logout" INTEGER NOT NULL CHECK ("force_logout" >= 0) DEFAULT 0,
CONSTRAINT "email" UNIQUE ("email") CONSTRAINT "users_email_uq" UNIQUE ("email")
); );
CREATE TABLE "users_2fa" ( CREATE TABLE "users_2fa" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK ("id" >= 0), "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"user_id" INTEGER NOT NULL CHECK ("user_id" >= 0), "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0),
"mechanism" INTEGER NOT NULL CHECK ("mechanism" >= 0), "mechanism" INTEGER NOT NULL CHECK ("mechanism" >= 0),
"seed" VARCHAR(255) DEFAULT NULL, "seed" TEXT DEFAULT NULL COLLATE BINARY,
"created_at" INTEGER NOT NULL CHECK ("created_at" >= 0), "created_at" INTEGER NOT NULL CHECK ("created_at" >= 0),
"expires_at" INTEGER CHECK ("expires_at" >= 0) DEFAULT NULL, "expires_at" INTEGER CHECK ("expires_at" >= 0) DEFAULT NULL,
CONSTRAINT "user_id_mechanism" UNIQUE ("user_id", "mechanism") CONSTRAINT "users_2fa_user_id_mechanism_uq" UNIQUE ("user_id", "mechanism")
); );
CREATE TABLE "users_confirmations" ( CREATE TABLE "users_confirmations" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK ("id" >= 0), "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"user_id" INTEGER NOT NULL CHECK ("user_id" >= 0), "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0),
"email" VARCHAR(249) NOT NULL, "email" TEXT NOT NULL COLLATE NOCASE,
"selector" VARCHAR(16) NOT NULL, "selector" TEXT NOT NULL COLLATE BINARY,
"token" VARCHAR(255) NOT NULL, "token" TEXT NOT NULL COLLATE BINARY,
"expires" INTEGER NOT NULL CHECK ("expires" >= 0), "expires" INTEGER NOT NULL CHECK ("expires" >= 0),
CONSTRAINT "selector" UNIQUE ("selector") CONSTRAINT "users_confirmations_selector_uq" UNIQUE ("selector")
); );
CREATE INDEX "users_confirmations.email_expires" ON "users_confirmations" ("email", "expires"); CREATE INDEX "users_confirmations_email_expires_ix" ON "users_confirmations" ("email", "expires");
CREATE INDEX "users_confirmations.user_id" ON "users_confirmations" ("user_id"); CREATE INDEX "users_confirmations_user_id_ix" ON "users_confirmations" ("user_id");
CREATE TABLE "users_otps" ( CREATE TABLE "users_otps" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK ("id" >= 0), "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"user_id" INTEGER NOT NULL CHECK ("user_id" >= 0), "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0),
"mechanism" INTEGER NOT NULL CHECK ("mechanism" >= 0), "mechanism" INTEGER NOT NULL CHECK ("mechanism" >= 0),
"single_factor" INTEGER NOT NULL CHECK ("single_factor" >= 0) DEFAULT "0", "single_factor" INTEGER NOT NULL CHECK ("single_factor" >= 0 AND "single_factor" <= 1) DEFAULT 0,
"selector" VARCHAR(24) NOT NULL, "selector" TEXT NOT NULL COLLATE BINARY,
"token" VARCHAR(255) NOT NULL, "token" TEXT NOT NULL COLLATE BINARY,
"expires_at" INTEGER CHECK ("expires_at" >= 0) DEFAULT NULL "expires_at" INTEGER CHECK ("expires_at" >= 0) DEFAULT NULL
); );
CREATE INDEX "users_otps.user_id_mechanism" ON "users_otps" ("user_id", "mechanism"); CREATE INDEX "users_otps_user_id_mechanism_ix" ON "users_otps" ("user_id", "mechanism");
CREATE INDEX "users_otps.selector_user_id" ON "users_otps" ("selector", "user_id"); CREATE INDEX "users_otps_selector_user_id_ix" ON "users_otps" ("selector", "user_id");
CREATE TABLE "users_remembered" ( CREATE TABLE "users_remembered" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK ("id" >= 0), "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"user" INTEGER NOT NULL CHECK ("user" >= 0), "user" INTEGER NOT NULL CHECK ("user" >= 0),
"selector" VARCHAR(24) NOT NULL, "selector" TEXT NOT NULL COLLATE BINARY,
"token" VARCHAR(255) NOT NULL, "token" TEXT NOT NULL COLLATE BINARY,
"expires" INTEGER NOT NULL CHECK ("expires" >= 0), "expires" INTEGER NOT NULL CHECK ("expires" >= 0),
CONSTRAINT "selector" UNIQUE ("selector") CONSTRAINT "users_remembered_selector_uq" UNIQUE ("selector")
); );
CREATE INDEX "users_remembered.user" ON "users_remembered" ("user"); CREATE INDEX "users_remembered_user_ix" ON "users_remembered" ("user");
CREATE TABLE "users_resets" ( CREATE TABLE "users_resets" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK ("id" >= 0), "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"user" INTEGER NOT NULL CHECK ("user" >= 0), "user" INTEGER NOT NULL CHECK ("user" >= 0),
"selector" VARCHAR(20) NOT NULL, "selector" TEXT NOT NULL COLLATE BINARY,
"token" VARCHAR(255) NOT NULL, "token" TEXT NOT NULL COLLATE BINARY,
"expires" INTEGER NOT NULL CHECK ("expires" >= 0), "expires" INTEGER NOT NULL CHECK ("expires" >= 0),
CONSTRAINT "selector" UNIQUE ("selector") CONSTRAINT "users_resets_selector_uq" UNIQUE ("selector")
); );
CREATE INDEX "users_resets.user_expires" ON "users_resets" ("user", "expires"); CREATE INDEX "users_resets_user_expires_ix" ON "users_resets" ("user", "expires");
CREATE TABLE "users_throttling" ( CREATE TABLE "users_throttling" (
"bucket" VARCHAR(44) PRIMARY KEY NOT NULL, "bucket" TEXT PRIMARY KEY NOT NULL COLLATE BINARY,
"tokens" REAL NOT NULL CHECK ("tokens" >= 0), "tokens" REAL NOT NULL CHECK ("tokens" >= 0),
"replenished_at" INTEGER NOT NULL CHECK ("replenished_at" >= 0), "replenished_at" INTEGER NOT NULL CHECK ("replenished_at" >= 0),
"expires_at" INTEGER NOT NULL CHECK ("expires_at" >= 0) "expires_at" INTEGER NOT NULL CHECK ("expires_at" >= 0)
); );
CREATE INDEX "users_throttling.expires_at" ON "users_throttling" ("expires_at"); CREATE INDEX "users_throttling_expires_at_ix" ON "users_throttling" ("expires_at");