From 822f8e52638c3c6a11c6dbac46a425f3123c3e94 Mon Sep 17 00:00:00 2001 From: wangsijie Date: Tue, 18 Jun 2024 13:54:59 +0800 Subject: [PATCH] feat(core): issue subject tokens --- .../next-1718527764-add-subject-tokens.ts | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 packages/schemas/alterations/next-1718527764-add-subject-tokens.ts diff --git a/packages/schemas/alterations/next-1718527764-add-subject-tokens.ts b/packages/schemas/alterations/next-1718527764-add-subject-tokens.ts new file mode 100644 index 000000000000..413111089d74 --- /dev/null +++ b/packages/schemas/alterations/next-1718527764-add-subject-tokens.ts @@ -0,0 +1,36 @@ +import { sql } from '@silverhand/slonik'; + +import type { AlterationScript } from '../lib/types/alteration.js'; + +import { applyTableRls, dropTableRls } from './utils/1704934999-tables.js'; + +const alteration: AlterationScript = { + up: async (pool) => { + await pool.query(sql` + create table subject_tokens ( + tenant_id varchar(21) not null + references tenants (id) on update cascade on delete cascade, + id varchar(24) not null, + context jsonb /* @use JsonObject */ not null default '{}'::jsonb, + expires_at timestamptz not null, + consumed_at timestamptz, + user_id varchar(21) not null + references users (id) on update cascade on delete cascade, + created_at timestamptz not null default(now()), + creator_id varchar(32) not null, /* It is intented to not reference to user or application table */ + primary key (id) + ); + + create index subject_token__id on subject_tokens (tenant_id, id); + `); + await applyTableRls(pool, 'subject_tokens'); + }, + down: async (pool) => { + await dropTableRls(pool, 'subject_tokens'); + await pool.query(sql` + drop table subject_tokens + `); + }, +}; + +export default alteration;