105 lines
4.4 KiB
Python
105 lines
4.4 KiB
Python
from tortoise import BaseDBAsyncClient
|
|
|
|
|
|
async def upgrade(db: BaseDBAsyncClient) -> str:
|
|
return """
|
|
CREATE TABLE IF NOT EXISTS "call" (
|
|
"id" SERIAL NOT NULL PRIMARY KEY,
|
|
"started_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"ended_at" TIMESTAMPTZ
|
|
);
|
|
CREATE TABLE IF NOT EXISTS "server" (
|
|
"id" BIGSERIAL NOT NULL PRIMARY KEY,
|
|
"prefix" VARCHAR(3) NOT NULL DEFAULT 'p.'
|
|
);
|
|
CREATE TABLE IF NOT EXISTS "channel" (
|
|
"id" BIGSERIAL NOT NULL PRIMARY KEY,
|
|
"enabled" BOOL,
|
|
"webhook_id" BIGINT,
|
|
"webhook_url" TEXT,
|
|
"call_id" INT REFERENCES "call" ("id") ON DELETE CASCADE,
|
|
"server_id" BIGINT NOT NULL REFERENCES "server" ("id") ON DELETE CASCADE
|
|
);
|
|
CREATE TABLE IF NOT EXISTS "user" (
|
|
"id" BIGSERIAL NOT NULL PRIMARY KEY,
|
|
"username" VARCHAR(32) NOT NULL,
|
|
"is_masked" BOOL NOT NULL DEFAULT False,
|
|
"is_moderator" BOOL NOT NULL DEFAULT False
|
|
);
|
|
CREATE TABLE IF NOT EXISTS "profile" (
|
|
"id" SERIAL NOT NULL PRIMARY KEY,
|
|
"avatar_url" TEXT NOT NULL,
|
|
"name" VARCHAR(32) NOT NULL,
|
|
"color" INT,
|
|
"server_id" BIGINT REFERENCES "server" ("id") ON DELETE CASCADE,
|
|
"user_id" BIGINT NOT NULL REFERENCES "user" ("id") ON DELETE CASCADE,
|
|
CONSTRAINT "uid_profile_user_id_903480" UNIQUE ("user_id", "server_id")
|
|
);
|
|
CREATE TABLE IF NOT EXISTS "calluserchannelrelationship" (
|
|
"id" SERIAL NOT NULL PRIMARY KEY,
|
|
"is_masked" BOOL NOT NULL,
|
|
"mask" BIGINT NOT NULL,
|
|
"call_id" INT NOT NULL REFERENCES "call" ("id") ON DELETE CASCADE,
|
|
"channel_id" BIGINT NOT NULL REFERENCES "channel" ("id") ON DELETE CASCADE,
|
|
"profile_id" INT NOT NULL REFERENCES "profile" ("id") ON DELETE CASCADE,
|
|
"user_id" BIGINT NOT NULL REFERENCES "user" ("id") ON DELETE CASCADE,
|
|
CONSTRAINT "uid_callusercha_call_id_fad9b8" UNIQUE ("call_id", "user_id", "channel_id")
|
|
);
|
|
CREATE TABLE IF NOT EXISTS "message" (
|
|
"id" BIGSERIAL NOT NULL PRIMARY KEY,
|
|
"mask" BIGINT,
|
|
"was_deleted" BOOL NOT NULL DEFAULT False,
|
|
"propagation_id" BIGINT,
|
|
"created_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"call_id" INT NOT NULL REFERENCES "call" ("id") ON DELETE CASCADE,
|
|
"channel_id" BIGINT NOT NULL REFERENCES "channel" ("id") ON DELETE CASCADE,
|
|
"profile_id" INT NOT NULL REFERENCES "profile" ("id") ON DELETE CASCADE,
|
|
"propagation_channel_id" BIGINT REFERENCES "channel" ("id") ON DELETE CASCADE,
|
|
"replying_to_id" BIGINT REFERENCES "message" ("id") ON DELETE SET NULL,
|
|
"user_id" BIGINT NOT NULL REFERENCES "user" ("id") ON DELETE CASCADE
|
|
);
|
|
CREATE INDEX IF NOT EXISTS "idx_message_propaga_f0803c" ON "message" ("propagation_id");
|
|
CREATE TABLE IF NOT EXISTS "messagecontent" (
|
|
"id" SERIAL NOT NULL PRIMARY KEY,
|
|
"content" VARCHAR(4096) NOT NULL,
|
|
"was_propagated" BOOL NOT NULL DEFAULT True,
|
|
"created_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"message_id" BIGINT NOT NULL REFERENCES "message" ("id") ON DELETE CASCADE
|
|
);
|
|
CREATE TABLE IF NOT EXISTS "report" (
|
|
"id" SERIAL NOT NULL PRIMARY KEY,
|
|
"reason" VARCHAR(500) NOT NULL,
|
|
"priority" INT NOT NULL,
|
|
"status" SMALLINT NOT NULL DEFAULT 2,
|
|
"created_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"reported_by_id" BIGINT REFERENCES "user" ("id") ON DELETE CASCADE,
|
|
"call_id" INT NOT NULL UNIQUE REFERENCES "call" ("id") ON DELETE CASCADE
|
|
);
|
|
COMMENT ON COLUMN "report"."status" IS 'ACCEPTED: 0\nDECLINED: 1\nON_REVIEW: 2';
|
|
CREATE TABLE IF NOT EXISTS "ban" (
|
|
"id" SERIAL NOT NULL PRIMARY KEY,
|
|
"notification_message_id" BIGINT,
|
|
"reason" VARCHAR(500) NOT NULL,
|
|
"appeal" VARCHAR(500),
|
|
"status" SMALLINT NOT NULL DEFAULT 0,
|
|
"created_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"expires_at" TIMESTAMPTZ,
|
|
"banned_by_id" BIGINT NOT NULL REFERENCES "user" ("id") ON DELETE CASCADE,
|
|
"report_id" INT REFERENCES "report" ("id") ON DELETE SET NULL,
|
|
"user_id" BIGINT NOT NULL REFERENCES "user" ("id") ON DELETE NO ACTION
|
|
);
|
|
CREATE INDEX IF NOT EXISTS "idx_ban_notific_ea7b58" ON "ban" ("notification_message_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_ban_user_id_37a9cf" ON "ban" ("user_id", "expires_at");
|
|
COMMENT ON COLUMN "ban"."status" IS 'VALID: 0\nON_REVIEW: 1\nAPPEAL_ACCEPTED: 2\nAPPEAL_DECLINED: 3';
|
|
CREATE TABLE IF NOT EXISTS "aerich" (
|
|
"id" SERIAL NOT NULL PRIMARY KEY,
|
|
"version" VARCHAR(255) NOT NULL,
|
|
"app" VARCHAR(100) NOT NULL,
|
|
"content" JSONB NOT NULL
|
|
);"""
|
|
|
|
|
|
async def downgrade(db: BaseDBAsyncClient) -> str:
|
|
return """
|
|
"""
|