Barazo AppView backend barazo.forum
at main 31 lines 1.3 kB view raw
1import { pgTable, pgPolicy, text, index, serial, integer, check } from 'drizzle-orm/pg-core' 2import { sql } from 'drizzle-orm' 3import { appRole } from './roles.js' 4 5export const moderationActionRules = pgTable( 6 'moderation_action_rules', 7 { 8 id: serial('id').primaryKey(), 9 warningId: integer('warning_id'), 10 moderationActionId: integer('moderation_action_id'), 11 ruleVersionId: integer('rule_version_id').notNull(), 12 communityDid: text('community_did').notNull(), 13 }, 14 (table) => [ 15 index('mod_action_rules_warning_id_idx').on(table.warningId), 16 index('mod_action_rules_moderation_action_id_idx').on(table.moderationActionId), 17 index('mod_action_rules_rule_version_id_idx').on(table.ruleVersionId), 18 index('mod_action_rules_community_did_idx').on(table.communityDid), 19 check( 20 'exactly_one_parent', 21 sql`(warning_id IS NOT NULL AND moderation_action_id IS NULL) OR (warning_id IS NULL AND moderation_action_id IS NOT NULL)` 22 ), 23 pgPolicy('tenant_isolation', { 24 as: 'permissive', 25 to: appRole, 26 for: 'all', 27 using: sql`community_did = current_setting('app.current_community_did', true)`, 28 withCheck: sql`community_did = current_setting('app.current_community_did', true)`, 29 }), 30 ] 31).enableRLS()