mirror of
https://github.com/psforever/PSFPortal.git
synced 2026-01-19 18:14:45 +00:00
78 lines
2.5 KiB
PL/PgSQL
78 lines
2.5 KiB
PL/PgSQL
CREATE TABLE IF NOT EXISTS "accounts" (
|
|
"id" SERIAL PRIMARY KEY NOT NULL,
|
|
"username" VARCHAR(64) NOT NULL UNIQUE,
|
|
"passhash" VARCHAR(64) NOT NULL,
|
|
"created" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"last_modified" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"inactive" BOOLEAN NOT NULL DEFAULT FALSE,
|
|
"gm" BOOLEAN NOT NULL DEFAULT FALSE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "characters" (
|
|
"id" SERIAL PRIMARY KEY NOT NULL,
|
|
"name" VARCHAR(64) NOT NULL,
|
|
"account_id" INT NOT NULL REFERENCES accounts (id),
|
|
"faction_id" INT NOT NULL,
|
|
"gender_id" INT NOT NULL,
|
|
"head_id" INT NOT NULL,
|
|
"voice_id" INT NOT NULL,
|
|
"created" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"last_login" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"last_modified" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"deleted" BOOLEAN NOT NULL DEFAULT FALSE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "logins" (
|
|
"id" SERIAL PRIMARY KEY NOT NULL,
|
|
"account_id" INT NOT NULL REFERENCES accounts (id),
|
|
"login_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"ip_address" VARCHAR(32) NOT NULL,
|
|
"canonical_hostname" VARCHAR(132) NOT NULL,
|
|
"hostname" VARCHAR(132) NOT NULL,
|
|
"port" INT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "loadouts" (
|
|
"id" SERIAL PRIMARY KEY NOT NULL,
|
|
"characters_id" INT NOT NULL REFERENCES characters (id),
|
|
"loadout_number" INT NOT NULL,
|
|
"exosuit_id" INT NOT NULL,
|
|
"name" VARCHAR(36) NOT NULL,
|
|
"items" TEXT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "lockers" (
|
|
"id" SERIAL PRIMARY KEY NOT NULL,
|
|
"characters_id" INT NOT NULL REFERENCES characters (id),
|
|
"items" TEXT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE "session" (
|
|
"sid" varchar NOT NULL COLLATE "default",
|
|
"sess" json NOT NULL,
|
|
"expire" timestamp(6) NOT NULL
|
|
)
|
|
WITH (OIDS=FALSE);
|
|
ALTER TABLE "session" ADD CONSTRAINT "session_pkey" PRIMARY KEY ("sid") NOT DEFERRABLE INITIALLY IMMEDIATE;
|
|
|
|
--These triggers update the last_modified timestamp column when a table is updated
|
|
CREATE OR REPLACE FUNCTION fn_set_last_modified_timestamp()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.last_modified = NOW();
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
DROP TRIGGER IF EXISTS trigger_accounts_set_last_modified on accounts;
|
|
CREATE TRIGGER trigger_accounts_set_last_modified
|
|
BEFORE UPDATE ON accounts
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE fn_set_last_modified_timestamp();
|
|
|
|
DROP TRIGGER IF EXISTS trigger_players_set_last_modified on characters;
|
|
CREATE TRIGGER trigger_players_set_last_modified
|
|
BEFORE UPDATE ON characters
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE fn_set_last_modified_timestamp();
|