feat(mcp): add migration 0007 up — mcp_tokens table

This commit is contained in:
2026-05-08 07:03:24 +08:00
parent 08f530bc0a
commit f9f5c15345
+22
View File
@@ -0,0 +1,22 @@
-- ============ MCP Tokens ============
CREATE TABLE mcp_tokens (
id UUID PRIMARY KEY,
token_hash BYTEA UNIQUE NOT NULL, -- SHA-256(opaque token)
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
name TEXT NOT NULL,
issuer TEXT NOT NULL,
scope JSONB NOT NULL DEFAULT '{}'::jsonb, -- {"tools": [...] | null, "project_ids": [...] | null}
acp_session_id UUID REFERENCES acp_sessions(id) ON DELETE CASCADE, -- 仅 issuer='system' 填
expires_at TIMESTAMPTZ, -- NULL = 永不过期
last_used_at TIMESTAMPTZ,
revoked_at TIMESTAMPTZ,
created_by UUID NOT NULL REFERENCES users(id),
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CONSTRAINT mcp_tokens_issuer_check CHECK (issuer IN ('system','admin')),
CONSTRAINT mcp_tokens_system_session_required CHECK
((issuer='system' AND acp_session_id IS NOT NULL) OR
(issuer='admin' AND acp_session_id IS NULL))
);
CREATE INDEX idx_mcp_tokens_user_active ON mcp_tokens(user_id) WHERE revoked_at IS NULL;
CREATE INDEX idx_mcp_tokens_session ON mcp_tokens(acp_session_id) WHERE acp_session_id IS NOT NULL;
CREATE INDEX idx_mcp_tokens_expires ON mcp_tokens(expires_at) WHERE revoked_at IS NULL;