H-289: add Captain Skill management API (#46)
* H-289: add Captain Skill management API * H-289: guard Captain Skill updates with CAS * H-289: version all Captain Skill updates --------- Co-authored-by: Rogee <rogee@ipao.vip>
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
DROP TABLE IF EXISTS captain_assistant_skills;
|
||||
DROP TABLE IF EXISTS captain_skill_references;
|
||||
DROP TABLE IF EXISTS captain_skills;
|
||||
@@ -0,0 +1,38 @@
|
||||
CREATE TABLE captain_skills (
|
||||
id SERIAL PRIMARY KEY,
|
||||
account_id INTEGER NOT NULL REFERENCES accounts(id) ON DELETE CASCADE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
description VARCHAR(1024) NOT NULL,
|
||||
instructions_md TEXT NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'draft' CHECK (status IN ('draft', 'active', 'archived')),
|
||||
version INTEGER NOT NULL DEFAULT 1 CHECK (version > 0),
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
UNIQUE (account_id, name)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_captain_skills_account_status ON captain_skills(account_id, status);
|
||||
|
||||
CREATE TABLE captain_skill_references (
|
||||
id SERIAL PRIMARY KEY,
|
||||
skill_id INTEGER NOT NULL REFERENCES captain_skills(id) ON DELETE CASCADE,
|
||||
reference_key VARCHAR(255) NOT NULL,
|
||||
content_md TEXT NOT NULL,
|
||||
position INTEGER NOT NULL CHECK (position >= 0),
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
UNIQUE (skill_id, reference_key),
|
||||
UNIQUE (skill_id, position)
|
||||
);
|
||||
|
||||
CREATE TABLE captain_assistant_skills (
|
||||
id SERIAL PRIMARY KEY,
|
||||
account_id INTEGER NOT NULL REFERENCES accounts(id) ON DELETE CASCADE,
|
||||
assistant_id INTEGER NOT NULL REFERENCES captain_assistants(id) ON DELETE CASCADE,
|
||||
skill_id INTEGER NOT NULL REFERENCES captain_skills(id) ON DELETE CASCADE,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
UNIQUE (assistant_id, skill_id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_captain_assistant_skills_account ON captain_assistant_skills(account_id);
|
||||
CREATE INDEX idx_captain_assistant_skills_skill ON captain_assistant_skills(skill_id);
|
||||
Reference in New Issue
Block a user