From 4718cec54aad3e95fed207d81e099df685553cb8 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Mon, 1 Jul 2024 12:57:04 +0100 Subject: [PATCH] Add a DBML schema for the sqloper module and update the tables. --- docs/sql/sqloper/mysql.sql | 43 +++++++++++++++++++++++--------- docs/sql/sqloper/pgsql.sql | 48 +++++++++++++++++++++++++++--------- docs/sql/sqloper/schema.dbml | 43 ++++++++++++++++++++++++++++++++ docs/sql/sqloper/sqlite3.sql | 41 ++++++++++++++++++++++-------- 4 files changed, 141 insertions(+), 34 deletions(-) create mode 100644 docs/sql/sqloper/schema.dbml diff --git a/docs/sql/sqloper/mysql.sql b/docs/sql/sqloper/mysql.sql index 83dfa68a6..7c7d20d1d 100644 --- a/docs/sql/sqloper/mysql.sql +++ b/docs/sql/sqloper/mysql.sql @@ -1,12 +1,31 @@ -CREATE TABLE ircd_opers ( - id bigint(20) NOT NULL auto_increment, - name text NOT NULL, - password text NOT NULL, - hash text, - host text NOT NULL, - type text NOT NULL, - fingerprint text, - autologin tinyint(1) NOT NULL DEFAULT 0, - active tinyint(1) NOT NULL DEFAULT 1, - PRIMARY KEY (id) -) ENGINE=InnoDB; +CREATE TABLE IF NOT EXISTS `ircd_opers` ( + `active` bool NOT NULL DEFAULT true, + `name` text NOT NULL, + `password` text NOT NULL, + `host` text NOT NULL, + `type` text NOT NULL, + + `autologin` ENUM ('strict', 'relaxed', 'never'), + `class` text, + `hash` text, + `maxchans` bigint, + `nopassword` bool, + `vhost` text, + + `commands` text, + `privs` text, + `chanmodes` text, + `usermodes` text, + `snomasks` text, + + `account` text, + `autojoin` text, + `automotd` bool, + `fingerprint` text, + `level` bigint, + `modes` text, + `motd` bool, + `override` text, + `sslonly` bool, + `swhois` text +); diff --git a/docs/sql/sqloper/pgsql.sql b/docs/sql/sqloper/pgsql.sql index 954bc84fa..a572fe4a8 100644 --- a/docs/sql/sqloper/pgsql.sql +++ b/docs/sql/sqloper/pgsql.sql @@ -1,13 +1,37 @@ -CREATE TABLE ircd_opers ( - "id" serial NOT NULL, - "name" text NOT NULL, - "password" text NOT NULL, - "hash" text, - "host" text NOT NULL, - "type" text NOT NULL, - "fingerprint" text, - "autologin" smallint NOT NULL DEFAULT 0, - "active" smallint NOT NULL DEFAULT 1 +CREATE TYPE "autologin" AS ENUM ( + 'strict', + 'relaxed', + 'never' +); + +CREATE TABLE "ircd_opers" ( + "active" bool NOT NULL DEFAULT true, + "name" text NOT NULL, + "password" text NOT NULL, + "host" text NOT NULL, + "type" text NOT NULL, + + "autologin" autologin, + "class" text, + "hash" text, + "maxchans" bigint, + "nopassword" bool, + "vhost" text, + + "commands" text, + "privs" text, + "chanmodes" text, + "usermodes" text, + "snomasks" text, + + "account" text, + "autojoin" text, + "automotd" bool, + "fingerprint" text, + "level" bigint, + "modes" text, + "motd" bool, + "override" text, + "sslonly" bool, + "swhois" text ); -ALTER TABLE ONLY ircd_opers - ADD CONSTRAINT ircd_opers_pkey PRIMARY KEY (id); diff --git a/docs/sql/sqloper/schema.dbml b/docs/sql/sqloper/schema.dbml new file mode 100644 index 000000000..e39c38e72 --- /dev/null +++ b/docs/sql/sqloper/schema.dbml @@ -0,0 +1,43 @@ +Enum autologin { + strict + relaxed + never +} + +Table ircd_opers { + // internal to sqloper + active bool [default: true, not null] + + // core oper config (required) + name text [not null] + password text [not null] + host text [not null] + type text [not null] + + // core oper config (optional) + autologin autologin [null] + class text [null] + hash text [null] + maxchans bigint [null] + nopassword bool [null] + vhost text [null] + + // core type config + commands text [null] + privs text [null] + chanmodes text [null] + usermodes text [null] + snomasks text [null] + + // module config + account text [null] // account + autojoin text [null] // operjoin + automotd bool [null] // opermotd + fingerprint text [null] // sslinfo + level bigint [null] // operlevels + modes text [null] // opermodes + motd bool [null] // opermotd + override text [null] // override + sslonly bool [null] // sslinfo + swhois text [null] // swhois +} diff --git a/docs/sql/sqloper/sqlite3.sql b/docs/sql/sqloper/sqlite3.sql index 6aec5a118..0e54c1351 100644 --- a/docs/sql/sqloper/sqlite3.sql +++ b/docs/sql/sqloper/sqlite3.sql @@ -1,10 +1,31 @@ -CREATE TABLE ircd_opers ( -id integer primary key, -name text NOT NULL, -password text NOT NULL, -hash text, -host text NOT NULL, -type text NOT NULL, -fingerprint text, -autologin integer NOT NULL DEFAULT 0, -active integer NOT NULL DEFAULT 1); +CREATE TABLE IF NOT EXISTS "ircd_opers" ( + "active" bool NOT NULL DEFAULT true, + "name" text NOT NULL, + "password" text NOT NULL, + "host" text NOT NULL, + "type" text NOT NULL, + + "autologin" CHECK ("autologin" IN ('strict', 'relaxed', 'never')), + "class" text, + "hash" text, + "maxchans" bigint, + "nopassword" bool, + "vhost" text, + + "commands" text, + "privs" text, + "chanmodes" text, + "usermodes" text, + "snomasks" text, + + "account" text, + "autojoin" text, + "automotd" bool, + "fingerprint" text, + "level" bigint, + "modes" text, + "motd" bool, + "override" text, + "sslonly" bool, + "swhois" text +);