Barazo AppView backend
barazo.forum
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()