@headless-lms/adapter-db 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/repositories/assets.js +1 -0
- package/dist/repositories/assets.js.map +1 -1
- package/dist/repositories/content.js +3 -0
- package/dist/repositories/content.js.map +1 -1
- package/dist/repositories/organizations.d.ts +2 -1
- package/dist/repositories/organizations.js +5 -0
- package/dist/repositories/organizations.js.map +1 -1
- package/dist/schema/assets.d.ts +1 -1
- package/dist/schema/automations.d.ts +3 -3
- package/dist/schema/better-auth.d.ts +17 -17
- package/dist/schema/content.d.ts +51 -0
- package/dist/schema/content.js +19 -1
- package/dist/schema/content.js.map +1 -1
- package/dist/schema/discussion.d.ts +1 -1
- package/dist/schema/entitlements.d.ts +2 -2
- package/dist/schema/organizations.d.ts +19 -0
- package/dist/schema/organizations.js +2 -1
- package/dist/schema/organizations.js.map +1 -1
- package/dist/schema/roles.d.ts +1 -1
- package/drizzle/0020_space_images.sql +9 -0
- package/drizzle/0021_org_metadata.sql +1 -0
- package/drizzle/meta/0020_snapshot.json +10045 -0
- package/drizzle/meta/0021_snapshot.json +10052 -0
- package/drizzle/meta/_journal.json +14 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organizations.js","names":[],"sources":["../../src/repositories/organizations.ts"],"sourcesContent":["// organizations — Drizzle repository (implements the core outbound port).\nimport { and, asc, eq, inArray, sql } from \"drizzle-orm\";\nimport type { NodePgDatabase } from \"drizzle-orm/node-postgres\";\nimport type {\n CreateOrgUserInput,\n Invite,\n NewInviteRow,\n NewOrganizationRow,\n Organization,\n OrganizationsRepository,\n OrgUser,\n UpdateOrganizationInput,\n UpdateOrgUserInput,\n} from \"@headless-lms/core/organizations\";\nimport { invites, organizations, orgUsers } from \"../schema/organizations.js\";\nimport type { Logger } from \"@headless-lms/core/shared/ports\";\nimport { noopLogger } from \"@headless-lms/core/shared/logger\";\nimport { ConflictError } from \"@headless-lms/core/shared/errors\";\nimport { isUniqueViolation, pgErrorFields, translateDbErrors } from \"./pg-errors.js\";\n\nconst INVITE_STATUSES = [\"pending\", \"accepted\", \"rejected\", \"canceled\"] as const;\ntype InviteStatus = (typeof INVITE_STATUSES)[number];\nconst toStatus = (s: string): InviteStatus =>\n (INVITE_STATUSES as readonly string[]).includes(s) ? (s as InviteStatus) : \"pending\";\n\nfunction toInvite(row: typeof invites.$inferSelect): Invite {\n return {\n id: row.id,\n orgId: row.orgId,\n email: row.email,\n roleKey: row.roleKey,\n status: row.status,\n invitedBy: row.invitedBy,\n tokenHash: row.tokenHash,\n expiresAt: row.expiresAt,\n createdAt: row.createdAt,\n updatedAt: row.updatedAt,\n };\n}\n\nexport class DrizzleOrganizationsRepository implements OrganizationsRepository {\n constructor(\n private readonly db: NodePgDatabase,\n private readonly logger: Logger = noopLogger,\n ) {}\n\n async create(input: NewOrganizationRow): Promise<Organization> {\n const [row] = await this.db\n .insert(organizations)\n .values({\n externalId: input.externalId,\n name: input.name,\n slug: input.slug,\n ownerId: input.ownerId,\n id: input.id,\n })\n .returning();\n if (!row) {\n throw new Error(\"failed to insert organization\");\n }\n return row!;\n }\n\n async update(id: string, input: UpdateOrganizationInput): Promise<Organization | null> {\n const [row] = await this.db\n .update(organizations)\n .set({ name: input.name, slug: input.slug })\n .where(eq(organizations.id, id))\n .returning();\n return row ?? null;\n }\n\n async delete(id: string): Promise<Organization> {\n const [row] = await this.db.delete(organizations).where(eq(organizations.id, id)).returning();\n\n if (!row) {\n throw new Error(\"failed to delete organization\");\n }\n return row;\n }\n\n async findById(id: string): Promise<Organization | null> {\n const [row] = await this.db.select().from(organizations).where(eq(organizations.id, id));\n return row ?? null;\n }\n\n async listIds(): Promise<string[]> {\n const rows = await this.db\n .select({ id: organizations.id })\n .from(organizations)\n .orderBy(asc(organizations.id));\n return rows.map((row) => row.id);\n }\n\n async findByExternalId(externalId: string): Promise<Organization | null> {\n const [row] = await this.db\n .select()\n .from(organizations)\n .where(eq(organizations.externalId, externalId))\n .limit(1);\n return row ?? null;\n }\n\n async findBySlug(slug: string): Promise<Organization | null> {\n const [row] = await this.db\n .select()\n .from(organizations)\n .where(eq(organizations.slug, slug))\n .limit(1);\n return row ?? null;\n }\n\n async upsertPendingInvite(orgId: string, input: NewInviteRow): Promise<Invite> {\n const [row] = await this.db\n .insert(invites)\n .values({\n orgId,\n email: input.email,\n roleKey: input.roleKey,\n status: \"pending\",\n invitedBy: input.invitedBy,\n tokenHash: input.tokenHash,\n expiresAt: input.expiresAt,\n })\n .onConflictDoUpdate({\n target: [invites.orgId, invites.email],\n targetWhere: sql`${invites.status} = 'pending'`,\n set: {\n roleKey: input.roleKey,\n invitedBy: input.invitedBy,\n tokenHash: input.tokenHash,\n expiresAt: input.expiresAt,\n },\n })\n .returning();\n if (!row) {\n throw new Error(\"failed to upsert invite\");\n }\n return toInvite(row);\n }\n\n async setInviteStatus(orgId: string, id: string, status: string): Promise<Invite | null> {\n const [row] = await this.db\n .update(invites)\n .set({ status: toStatus(status) })\n .where(and(eq(invites.orgId, orgId), eq(invites.id, id)))\n .returning();\n return row ? toInvite(row) : null;\n }\n\n async setInviteRole(\n orgId: string,\n id: string,\n roleKey: string,\n invitedBy: string,\n ): Promise<Invite | null> {\n const [row] = await this.db\n .update(invites)\n .set({ roleKey, invitedBy })\n .where(and(eq(invites.orgId, orgId), eq(invites.id, id), eq(invites.status, \"pending\")))\n .returning();\n return row ? toInvite(row) : null;\n }\n\n async findInviteByTokenHash(tokenHash: string): Promise<Invite | null> {\n const [row] = await this.db\n .select()\n .from(invites)\n .where(eq(invites.tokenHash, tokenHash))\n .limit(1);\n return row ? toInvite(row) : null;\n }\n\n async findPendingInvite(orgId: string, email: string): Promise<Invite | null> {\n const [row] = await this.db\n .select()\n .from(invites)\n .where(\n and(\n eq(invites.orgId, orgId),\n sql`lower(${invites.email}) = lower(${email})`,\n eq(invites.status, \"pending\"),\n ),\n )\n .limit(1);\n return row ? toInvite(row) : null;\n }\n\n async setInviteToken(\n orgId: string,\n id: string,\n tokenHash: string,\n expiresAt: Date,\n invitedBy: string,\n ): Promise<Invite | null> {\n const [row] = await this.db\n .update(invites)\n .set({ tokenHash, expiresAt, invitedBy })\n .where(and(eq(invites.orgId, orgId), eq(invites.id, id), eq(invites.status, \"pending\")))\n .returning();\n return row ? toInvite(row) : null;\n }\n\n async findOrgUser(orgId: string, userId: string): Promise<OrgUser | null> {\n const [row] = await this.db\n .select()\n .from(orgUsers)\n .where(and(eq(orgUsers.orgId, orgId), eq(orgUsers.userId, userId)))\n .limit(1);\n return row ?? null;\n }\n\n async findOrgUsersByUser(userId: string): Promise<OrgUser[]> {\n const rows = await this.db\n .select()\n .from(orgUsers)\n .where(eq(orgUsers.userId, userId))\n .orderBy(orgUsers.createdAt);\n return rows;\n }\n\n async findOrgUserById(orgId: string, id: string): Promise<OrgUser | null> {\n const [row] = await this.db\n .select()\n .from(orgUsers)\n .where(and(eq(orgUsers.orgId, orgId), eq(orgUsers.id, id)))\n .limit(1);\n return row ?? null;\n }\n\n async findOrgUsersByIds(orgId: string, ids: string[]): Promise<OrgUser[]> {\n if (ids.length === 0) {\n return [];\n }\n const rows = await this.db\n .select()\n .from(orgUsers)\n .where(and(eq(orgUsers.orgId, orgId), inArray(orgUsers.id, ids)));\n return rows;\n }\n\n async createOrgUser(input: CreateOrgUserInput): Promise<OrgUser> {\n try {\n const [row] = await this.db\n .insert(orgUsers)\n .values({\n orgId: input.orgId,\n userId: input.userId,\n status: input.status ?? \"active\",\n })\n .returning();\n if (!row) {\n throw new Error(\"failed to insert org user\");\n }\n return row;\n } catch (err) {\n if (isUniqueViolation(err)) {\n throw new ConflictError(\"That account already belongs to this organization\");\n }\n throw err;\n }\n }\n\n async updateOrgUser(\n orgId: string,\n id: string,\n patch: UpdateOrgUserInput,\n ): Promise<OrgUser | null> {\n const [row] = await this.db\n .update(orgUsers)\n .set({\n ...(patch.status !== undefined && { status: patch.status }),\n })\n .where(and(eq(orgUsers.orgId, orgId), eq(orgUsers.id, id)))\n .returning();\n return row ?? null;\n }\n\n async deleteOrgUser(orgId: string, id: string): Promise<OrgUser | null> {\n try {\n const [row] = await this.db\n .delete(orgUsers)\n .where(and(eq(orgUsers.orgId, orgId), eq(orgUsers.id, id)))\n .returning();\n return row ?? null;\n } catch (err) {\n if (pgErrorFields(err)?.code === \"23503\") {\n throw Object.assign(\n new ConflictError(\n \"This person has written posts, comments or messages and cannot be deleted\",\n ),\n { cause: err },\n );\n }\n throw err;\n }\n }\n}\ntranslateDbErrors(DrizzleOrganizationsRepository);\n"],"mappings":";;;;;;AAoBA,MAAM,kBAAkB;CAAC;CAAW;CAAY;CAAY;AAAU;AAEtE,MAAM,YAAY,MACf,gBAAsC,SAAS,CAAC,IAAK,IAAqB;AAE7E,SAAS,SAAS,KAA0C;CAC1D,OAAO;EACL,IAAI,IAAI;EACR,OAAO,IAAI;EACX,OAAO,IAAI;EACX,SAAS,IAAI;EACb,QAAQ,IAAI;EACZ,WAAW,IAAI;EACf,WAAW,IAAI;EACf,WAAW,IAAI;EACf,WAAW,IAAI;EACf,WAAW,IAAI;CACjB;AACF;AAEA,IAAa,iCAAb,MAA+E;CAE1D;CACA;CAFnB,YACE,IACA,SAAkC,YAClC;EAFiB,KAAA,KAAA;EACA,KAAA,SAAA;CAChB;CAEH,MAAM,OAAO,OAAkD;EAC7D,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,aAAa,CAAC,CACrB,OAAO;GACN,YAAY,MAAM;GAClB,MAAM,MAAM;GACZ,MAAM,MAAM;GACZ,SAAS,MAAM;GACf,IAAI,MAAM;EACZ,CAAC,CAAC,CACD,UAAU;EACb,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;EAEjD,OAAO;CACT;CAEA,MAAM,OAAO,IAAY,OAA8D;EACrF,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,aAAa,CAAC,CACrB,IAAI;GAAE,MAAM,MAAM;GAAM,MAAM,MAAM;EAAK,CAAC,CAAC,CAC3C,MAAM,GAAG,cAAc,IAAI,EAAE,CAAC,CAAC,CAC/B,UAAU;EACb,OAAO,OAAO;CAChB;CAEA,MAAM,OAAO,IAAmC;EAC9C,MAAM,CAAC,OAAO,MAAM,KAAK,GAAG,OAAO,aAAa,CAAC,CAAC,MAAM,GAAG,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU;EAE5F,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;EAEjD,OAAO;CACT;CAEA,MAAM,SAAS,IAA0C;EACvD,MAAM,CAAC,OAAO,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,MAAM,GAAG,cAAc,IAAI,EAAE,CAAC;EACvF,OAAO,OAAO;CAChB;CAEA,MAAM,UAA6B;EAKjC,QAAO,MAJY,KAAK,GACrB,OAAO,EAAE,IAAI,cAAc,GAAG,CAAC,CAAC,CAChC,KAAK,aAAa,CAAC,CACnB,QAAQ,IAAI,cAAc,EAAE,CAAC,EAAA,CACpB,KAAK,QAAQ,IAAI,EAAE;CACjC;CAEA,MAAM,iBAAiB,YAAkD;EACvE,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,CAAC,CACR,KAAK,aAAa,CAAC,CACnB,MAAM,GAAG,cAAc,YAAY,UAAU,CAAC,CAAC,CAC/C,MAAM,CAAC;EACV,OAAO,OAAO;CAChB;CAEA,MAAM,WAAW,MAA4C;EAC3D,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,CAAC,CACR,KAAK,aAAa,CAAC,CACnB,MAAM,GAAG,cAAc,MAAM,IAAI,CAAC,CAAC,CACnC,MAAM,CAAC;EACV,OAAO,OAAO;CAChB;CAEA,MAAM,oBAAoB,OAAe,OAAsC;EAC7E,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,OAAO,CAAC,CACf,OAAO;GACN;GACA,OAAO,MAAM;GACb,SAAS,MAAM;GACf,QAAQ;GACR,WAAW,MAAM;GACjB,WAAW,MAAM;GACjB,WAAW,MAAM;EACnB,CAAC,CAAC,CACD,mBAAmB;GAClB,QAAQ,CAAC,QAAQ,OAAO,QAAQ,KAAK;GACrC,aAAa,GAAG,GAAG,QAAQ,OAAO;GAClC,KAAK;IACH,SAAS,MAAM;IACf,WAAW,MAAM;IACjB,WAAW,MAAM;IACjB,WAAW,MAAM;GACnB;EACF,CAAC,CAAC,CACD,UAAU;EACb,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yBAAyB;EAE3C,OAAO,SAAS,GAAG;CACrB;CAEA,MAAM,gBAAgB,OAAe,IAAY,QAAwC;EACvF,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,OAAO,CAAC,CACf,IAAI,EAAE,QAAQ,SAAS,MAAM,EAAE,CAAC,CAAC,CACjC,MAAM,IAAI,GAAG,QAAQ,OAAO,KAAK,GAAG,GAAG,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CACxD,UAAU;EACb,OAAO,MAAM,SAAS,GAAG,IAAI;CAC/B;CAEA,MAAM,cACJ,OACA,IACA,SACA,WACwB;EACxB,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,OAAO,CAAC,CACf,IAAI;GAAE;GAAS;EAAU,CAAC,CAAC,CAC3B,MAAM,IAAI,GAAG,QAAQ,OAAO,KAAK,GAAG,GAAG,QAAQ,IAAI,EAAE,GAAG,GAAG,QAAQ,QAAQ,SAAS,CAAC,CAAC,CAAC,CACvF,UAAU;EACb,OAAO,MAAM,SAAS,GAAG,IAAI;CAC/B;CAEA,MAAM,sBAAsB,WAA2C;EACrE,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,CAAC,CACR,KAAK,OAAO,CAAC,CACb,MAAM,GAAG,QAAQ,WAAW,SAAS,CAAC,CAAC,CACvC,MAAM,CAAC;EACV,OAAO,MAAM,SAAS,GAAG,IAAI;CAC/B;CAEA,MAAM,kBAAkB,OAAe,OAAuC;EAC5E,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,CAAC,CACR,KAAK,OAAO,CAAC,CACb,MACC,IACE,GAAG,QAAQ,OAAO,KAAK,GACvB,GAAG,SAAS,QAAQ,MAAM,YAAY,MAAM,IAC5C,GAAG,QAAQ,QAAQ,SAAS,CAC9B,CACF,CAAC,CACA,MAAM,CAAC;EACV,OAAO,MAAM,SAAS,GAAG,IAAI;CAC/B;CAEA,MAAM,eACJ,OACA,IACA,WACA,WACA,WACwB;EACxB,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,OAAO,CAAC,CACf,IAAI;GAAE;GAAW;GAAW;EAAU,CAAC,CAAC,CACxC,MAAM,IAAI,GAAG,QAAQ,OAAO,KAAK,GAAG,GAAG,QAAQ,IAAI,EAAE,GAAG,GAAG,QAAQ,QAAQ,SAAS,CAAC,CAAC,CAAC,CACvF,UAAU;EACb,OAAO,MAAM,SAAS,GAAG,IAAI;CAC/B;CAEA,MAAM,YAAY,OAAe,QAAyC;EACxE,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,CAAC,CACR,KAAK,QAAQ,CAAC,CACd,MAAM,IAAI,GAAG,SAAS,OAAO,KAAK,GAAG,GAAG,SAAS,QAAQ,MAAM,CAAC,CAAC,CAAC,CAClE,MAAM,CAAC;EACV,OAAO,OAAO;CAChB;CAEA,MAAM,mBAAmB,QAAoC;EAM3D,OAAO,MALY,KAAK,GACrB,OAAO,CAAC,CACR,KAAK,QAAQ,CAAC,CACd,MAAM,GAAG,SAAS,QAAQ,MAAM,CAAC,CAAC,CAClC,QAAQ,SAAS,SAAS;CAE/B;CAEA,MAAM,gBAAgB,OAAe,IAAqC;EACxE,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,CAAC,CACR,KAAK,QAAQ,CAAC,CACd,MAAM,IAAI,GAAG,SAAS,OAAO,KAAK,GAAG,GAAG,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,CAC1D,MAAM,CAAC;EACV,OAAO,OAAO;CAChB;CAEA,MAAM,kBAAkB,OAAe,KAAmC;EACxE,IAAI,IAAI,WAAW,GACjB,OAAO,CAAC;EAMV,OAAO,MAJY,KAAK,GACrB,OAAO,CAAC,CACR,KAAK,QAAQ,CAAC,CACd,MAAM,IAAI,GAAG,SAAS,OAAO,KAAK,GAAG,QAAQ,SAAS,IAAI,GAAG,CAAC,CAAC;CAEpE;CAEA,MAAM,cAAc,OAA6C;EAC/D,IAAI;GACF,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,QAAQ,CAAC,CAChB,OAAO;IACN,OAAO,MAAM;IACb,QAAQ,MAAM;IACd,QAAQ,MAAM,UAAU;GAC1B,CAAC,CAAC,CACD,UAAU;GACb,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2BAA2B;GAE7C,OAAO;EACT,SAAS,KAAK;GACZ,IAAI,kBAAkB,GAAG,GACvB,MAAM,IAAI,cAAc,mDAAmD;GAE7E,MAAM;EACR;CACF;CAEA,MAAM,cACJ,OACA,IACA,OACyB;EACzB,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,QAAQ,CAAC,CAChB,IAAI,EACH,GAAI,MAAM,WAAW,KAAA,KAAa,EAAE,QAAQ,MAAM,OAAO,EAC3D,CAAC,CAAC,CACD,MAAM,IAAI,GAAG,SAAS,OAAO,KAAK,GAAG,GAAG,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,CAC1D,UAAU;EACb,OAAO,OAAO;CAChB;CAEA,MAAM,cAAc,OAAe,IAAqC;EACtE,IAAI;GACF,MAAM,CAAC,OAAO,MAAM,KAAK,GACtB,OAAO,QAAQ,CAAC,CAChB,MAAM,IAAI,GAAG,SAAS,OAAO,KAAK,GAAG,GAAG,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,CAC1D,UAAU;GACb,OAAO,OAAO;EAChB,SAAS,KAAK;GACZ,IAAI,cAAc,GAAG,CAAC,EAAE,SAAS,SAC/B,MAAM,OAAO,OACX,IAAI,cACF,2EACF,GACA,EAAE,OAAO,IAAI,CACf;GAEF,MAAM;EACR;CACF;AACF;AACA,kBAAkB,8BAA8B"}
|
|
1
|
+
{"version":3,"file":"organizations.js","names":[],"sources":["../../src/repositories/organizations.ts"],"sourcesContent":["// organizations — Drizzle repository (implements the core outbound port).\nimport { and, asc, eq, inArray, sql } from \"drizzle-orm\";\nimport type { NodePgDatabase } from \"drizzle-orm/node-postgres\";\nimport type {\n CreateOrgUserInput,\n Invite,\n NewInviteRow,\n NewOrganizationRow,\n Organization,\n OrganizationMetadata,\n OrganizationsRepository,\n OrgUser,\n UpdateOrganizationInput,\n UpdateOrgUserInput,\n} from \"@headless-lms/core/organizations\";\nimport { invites, organizations, orgUsers } from \"../schema/organizations.js\";\nimport type { Logger } from \"@headless-lms/core/shared/ports\";\nimport { noopLogger } from \"@headless-lms/core/shared/logger\";\nimport { ConflictError } from \"@headless-lms/core/shared/errors\";\nimport { isUniqueViolation, pgErrorFields, translateDbErrors } from \"./pg-errors.js\";\n\nconst INVITE_STATUSES = [\"pending\", \"accepted\", \"rejected\", \"canceled\"] as const;\ntype InviteStatus = (typeof INVITE_STATUSES)[number];\nconst toStatus = (s: string): InviteStatus =>\n (INVITE_STATUSES as readonly string[]).includes(s) ? (s as InviteStatus) : \"pending\";\n\nfunction toInvite(row: typeof invites.$inferSelect): Invite {\n return {\n id: row.id,\n orgId: row.orgId,\n email: row.email,\n roleKey: row.roleKey,\n status: row.status,\n invitedBy: row.invitedBy,\n tokenHash: row.tokenHash,\n expiresAt: row.expiresAt,\n createdAt: row.createdAt,\n updatedAt: row.updatedAt,\n };\n}\n\nexport class DrizzleOrganizationsRepository implements OrganizationsRepository {\n constructor(\n private readonly db: NodePgDatabase,\n private readonly logger: Logger = noopLogger,\n ) {}\n\n async create(input: NewOrganizationRow): Promise<Organization> {\n const [row] = await this.db\n .insert(organizations)\n .values({\n externalId: input.externalId,\n name: input.name,\n slug: input.slug,\n ownerId: input.ownerId,\n id: input.id,\n })\n .returning();\n if (!row) {\n throw new Error(\"failed to insert organization\");\n }\n return row!;\n }\n\n async update(id: string, input: UpdateOrganizationInput): Promise<Organization | null> {\n const [row] = await this.db\n .update(organizations)\n .set({ name: input.name, slug: input.slug })\n .where(eq(organizations.id, id))\n .returning();\n return row ?? null;\n }\n\n async delete(id: string): Promise<Organization> {\n const [row] = await this.db.delete(organizations).where(eq(organizations.id, id)).returning();\n\n if (!row) {\n throw new Error(\"failed to delete organization\");\n }\n return row;\n }\n\n async findById(id: string): Promise<Organization | null> {\n const [row] = await this.db.select().from(organizations).where(eq(organizations.id, id));\n return row ?? null;\n }\n\n async listIds(): Promise<string[]> {\n const rows = await this.db\n .select({ id: organizations.id })\n .from(organizations)\n .orderBy(asc(organizations.id));\n return rows.map((row) => row.id);\n }\n\n async findByExternalId(externalId: string): Promise<Organization | null> {\n const [row] = await this.db\n .select()\n .from(organizations)\n .where(eq(organizations.externalId, externalId))\n .limit(1);\n return row ?? null;\n }\n\n async setMetadata(id: string, metadata: OrganizationMetadata): Promise<Organization> {\n const [row] = await this.db\n .update(organizations)\n .set({ metadata })\n .where(eq(organizations.id, id))\n .returning();\n if (!row) {\n throw new Error(\"failed to update organization\");\n }\n return row;\n }\n\n async findBySlug(slug: string): Promise<Organization | null> {\n const [row] = await this.db\n .select()\n .from(organizations)\n .where(eq(organizations.slug, slug))\n .limit(1);\n return row ?? null;\n }\n\n async upsertPendingInvite(orgId: string, input: NewInviteRow): Promise<Invite> {\n const [row] = await this.db\n .insert(invites)\n .values({\n orgId,\n email: input.email,\n roleKey: input.roleKey,\n status: \"pending\",\n invitedBy: input.invitedBy,\n tokenHash: input.tokenHash,\n expiresAt: input.expiresAt,\n })\n .onConflictDoUpdate({\n target: [invites.orgId, invites.email],\n targetWhere: sql`${invites.status} = 'pending'`,\n set: {\n roleKey: input.roleKey,\n invitedBy: input.invitedBy,\n tokenHash: input.tokenHash,\n expiresAt: input.expiresAt,\n },\n })\n .returning();\n if (!row) {\n throw new Error(\"failed to upsert invite\");\n }\n return toInvite(row);\n }\n\n async setInviteStatus(orgId: string, id: string, status: string): Promise<Invite | null> {\n const [row] = await this.db\n .update(invites)\n .set({ status: toStatus(status) })\n .where(and(eq(invites.orgId, orgId), eq(invites.id, id)))\n .returning();\n return row ? toInvite(row) : null;\n }\n\n async setInviteRole(\n orgId: string,\n id: string,\n roleKey: string,\n invitedBy: string,\n ): Promise<Invite | null> {\n const [row] = await this.db\n .update(invites)\n .set({ roleKey, invitedBy })\n .where(and(eq(invites.orgId, orgId), eq(invites.id, id), eq(invites.status, \"pending\")))\n .returning();\n return row ? toInvite(row) : null;\n }\n\n async findInviteByTokenHash(tokenHash: string): Promise<Invite | null> {\n const [row] = await this.db\n .select()\n .from(invites)\n .where(eq(invites.tokenHash, tokenHash))\n .limit(1);\n return row ? toInvite(row) : null;\n }\n\n async findPendingInvite(orgId: string, email: string): Promise<Invite | null> {\n const [row] = await this.db\n .select()\n .from(invites)\n .where(\n and(\n eq(invites.orgId, orgId),\n sql`lower(${invites.email}) = lower(${email})`,\n eq(invites.status, \"pending\"),\n ),\n )\n .limit(1);\n return row ? toInvite(row) : null;\n }\n\n async setInviteToken(\n orgId: string,\n id: string,\n tokenHash: string,\n expiresAt: Date,\n invitedBy: string,\n ): Promise<Invite | null> {\n const [row] = await this.db\n .update(invites)\n .set({ tokenHash, expiresAt, invitedBy })\n .where(and(eq(invites.orgId, orgId), eq(invites.id, id), eq(invites.status, \"pending\")))\n .returning();\n return row ? toInvite(row) : null;\n }\n\n async findOrgUser(orgId: string, userId: string): Promise<OrgUser | null> {\n const [row] = await this.db\n .select()\n .from(orgUsers)\n .where(and(eq(orgUsers.orgId, orgId), eq(orgUsers.userId, userId)))\n .limit(1);\n return row ?? null;\n }\n\n async findOrgUsersByUser(userId: string): Promise<OrgUser[]> {\n const rows = await this.db\n .select()\n .from(orgUsers)\n .where(eq(orgUsers.userId, userId))\n .orderBy(orgUsers.createdAt);\n return rows;\n }\n\n async findOrgUserById(orgId: string, id: string): Promise<OrgUser | null> {\n const [row] = await this.db\n .select()\n .from(orgUsers)\n .where(and(eq(orgUsers.orgId, orgId), eq(orgUsers.id, id)))\n .limit(1);\n return row ?? null;\n }\n\n async findOrgUsersByIds(orgId: string, ids: string[]): Promise<OrgUser[]> {\n if (ids.length === 0) {\n return [];\n }\n const rows = await this.db\n .select()\n .from(orgUsers)\n .where(and(eq(orgUsers.orgId, orgId), inArray(orgUsers.id, ids)));\n return rows;\n }\n\n async createOrgUser(input: CreateOrgUserInput): Promise<OrgUser> {\n try {\n const [row] = await this.db\n .insert(orgUsers)\n .values({\n orgId: input.orgId,\n userId: input.userId,\n status: input.status ?? \"active\",\n })\n .returning();\n if (!row) {\n throw new Error(\"failed to insert org user\");\n }\n return row;\n } catch (err) {\n if (isUniqueViolation(err)) {\n throw new ConflictError(\"That account already belongs to this organization\");\n }\n throw err;\n }\n }\n\n async updateOrgUser(\n orgId: string,\n id: string,\n patch: UpdateOrgUserInput,\n ): Promise<OrgUser | null> {\n const [row] = await this.db\n .update(orgUsers)\n .set({\n ...(patch.status !== undefined && { status: patch.status }),\n })\n .where(and(eq(orgUsers.orgId, orgId), eq(orgUsers.id, id)))\n .returning();\n return row ?? null;\n }\n\n async deleteOrgUser(orgId: string, id: string): Promise<OrgUser | null> {\n try {\n const [row] = await this.db\n .delete(orgUsers)\n .where(and(eq(orgUsers.orgId, orgId), eq(orgUsers.id, id)))\n .returning();\n return row ?? null;\n } catch (err) {\n if (pgErrorFields(err)?.code === \"23503\") {\n throw Object.assign(\n new ConflictError(\n \"This person has written posts, comments or messages and cannot be deleted\",\n ),\n { cause: err },\n );\n }\n throw err;\n }\n }\n}\ntranslateDbErrors(DrizzleOrganizationsRepository);\n"],"mappings":"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"}
|
package/dist/schema/assets.d.ts
CHANGED
|
@@ -76,7 +76,7 @@ declare const assets: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
76
76
|
tableName: "assets";
|
|
77
77
|
dataType: "string";
|
|
78
78
|
columnType: "PgText";
|
|
79
|
-
data: "
|
|
79
|
+
data: "member" | "library";
|
|
80
80
|
driverParam: string;
|
|
81
81
|
notNull: true;
|
|
82
82
|
hasDefault: true;
|
|
@@ -123,7 +123,6 @@ declare const automations: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
123
123
|
identity: undefined;
|
|
124
124
|
generated: undefined;
|
|
125
125
|
}, {}, {
|
|
126
|
-
size: undefined;
|
|
127
126
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
128
127
|
name: "triggers";
|
|
129
128
|
dataType: "string";
|
|
@@ -132,6 +131,7 @@ declare const automations: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
132
131
|
enumValues: [string, ...string[]];
|
|
133
132
|
driverParam: string;
|
|
134
133
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
134
|
+
size: undefined;
|
|
135
135
|
}>;
|
|
136
136
|
actions: import("drizzle-orm/pg-core").PgColumn<{
|
|
137
137
|
name: "actions";
|
|
@@ -597,8 +597,6 @@ declare const notifications: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
597
597
|
identity: undefined;
|
|
598
598
|
generated: undefined;
|
|
599
599
|
}, {}, {
|
|
600
|
-
$type: Reason[];
|
|
601
|
-
size: undefined;
|
|
602
600
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
603
601
|
name: "reasons";
|
|
604
602
|
dataType: "string";
|
|
@@ -607,6 +605,8 @@ declare const notifications: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
607
605
|
enumValues: [string, ...string[]];
|
|
608
606
|
driverParam: string;
|
|
609
607
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
608
|
+
size: undefined;
|
|
609
|
+
$type: Reason[];
|
|
610
610
|
}>;
|
|
611
611
|
matchedReason: import("drizzle-orm/pg-core").PgColumn<{
|
|
612
612
|
name: "matched_reason";
|
|
@@ -1156,7 +1156,6 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1156
1156
|
identity: undefined;
|
|
1157
1157
|
generated: undefined;
|
|
1158
1158
|
}, {}, {
|
|
1159
|
-
size: undefined;
|
|
1160
1159
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
1161
1160
|
name: "scopes";
|
|
1162
1161
|
dataType: "string";
|
|
@@ -1165,6 +1164,7 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1165
1164
|
enumValues: [string, ...string[]];
|
|
1166
1165
|
driverParam: string;
|
|
1167
1166
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
1167
|
+
size: undefined;
|
|
1168
1168
|
}>;
|
|
1169
1169
|
clientCredentialsScopes: import("drizzle-orm/pg-core").PgColumn<{
|
|
1170
1170
|
name: "client_credentials_scopes";
|
|
@@ -1199,7 +1199,6 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1199
1199
|
identity: undefined;
|
|
1200
1200
|
generated: undefined;
|
|
1201
1201
|
}, {}, {
|
|
1202
|
-
size: undefined;
|
|
1203
1202
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
1204
1203
|
name: "client_credentials_scopes";
|
|
1205
1204
|
dataType: "string";
|
|
@@ -1208,6 +1207,7 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1208
1207
|
enumValues: [string, ...string[]];
|
|
1209
1208
|
driverParam: string;
|
|
1210
1209
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
1210
|
+
size: undefined;
|
|
1211
1211
|
}>;
|
|
1212
1212
|
userId: import("drizzle-orm/pg-core").PgColumn<{
|
|
1213
1213
|
name: "user_id";
|
|
@@ -1344,7 +1344,6 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1344
1344
|
identity: undefined;
|
|
1345
1345
|
generated: undefined;
|
|
1346
1346
|
}, {}, {
|
|
1347
|
-
size: undefined;
|
|
1348
1347
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
1349
1348
|
name: "contacts";
|
|
1350
1349
|
dataType: "string";
|
|
@@ -1353,6 +1352,7 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1353
1352
|
enumValues: [string, ...string[]];
|
|
1354
1353
|
driverParam: string;
|
|
1355
1354
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
1355
|
+
size: undefined;
|
|
1356
1356
|
}>;
|
|
1357
1357
|
tos: import("drizzle-orm/pg-core").PgColumn<{
|
|
1358
1358
|
name: "tos";
|
|
@@ -1472,7 +1472,6 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1472
1472
|
identity: undefined;
|
|
1473
1473
|
generated: undefined;
|
|
1474
1474
|
}, {}, {
|
|
1475
|
-
size: undefined;
|
|
1476
1475
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
1477
1476
|
name: "redirect_uris";
|
|
1478
1477
|
dataType: "string";
|
|
@@ -1481,6 +1480,7 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1481
1480
|
enumValues: [string, ...string[]];
|
|
1482
1481
|
driverParam: string;
|
|
1483
1482
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
1483
|
+
size: undefined;
|
|
1484
1484
|
}>;
|
|
1485
1485
|
postLogoutRedirectUris: import("drizzle-orm/pg-core").PgColumn<{
|
|
1486
1486
|
name: "post_logout_redirect_uris";
|
|
@@ -1515,7 +1515,6 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1515
1515
|
identity: undefined;
|
|
1516
1516
|
generated: undefined;
|
|
1517
1517
|
}, {}, {
|
|
1518
|
-
size: undefined;
|
|
1519
1518
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
1520
1519
|
name: "post_logout_redirect_uris";
|
|
1521
1520
|
dataType: "string";
|
|
@@ -1524,6 +1523,7 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1524
1523
|
enumValues: [string, ...string[]];
|
|
1525
1524
|
driverParam: string;
|
|
1526
1525
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
1526
|
+
size: undefined;
|
|
1527
1527
|
}>;
|
|
1528
1528
|
backchannelLogoutUri: import("drizzle-orm/pg-core").PgColumn<{
|
|
1529
1529
|
name: "backchannel_logout_uri";
|
|
@@ -1660,7 +1660,6 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1660
1660
|
identity: undefined;
|
|
1661
1661
|
generated: undefined;
|
|
1662
1662
|
}, {}, {
|
|
1663
|
-
size: undefined;
|
|
1664
1663
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
1665
1664
|
name: "grant_types";
|
|
1666
1665
|
dataType: "string";
|
|
@@ -1669,6 +1668,7 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1669
1668
|
enumValues: [string, ...string[]];
|
|
1670
1669
|
driverParam: string;
|
|
1671
1670
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
1671
|
+
size: undefined;
|
|
1672
1672
|
}>;
|
|
1673
1673
|
responseTypes: import("drizzle-orm/pg-core").PgColumn<{
|
|
1674
1674
|
name: "response_types";
|
|
@@ -1703,7 +1703,6 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1703
1703
|
identity: undefined;
|
|
1704
1704
|
generated: undefined;
|
|
1705
1705
|
}, {}, {
|
|
1706
|
-
size: undefined;
|
|
1707
1706
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
1708
1707
|
name: "response_types";
|
|
1709
1708
|
dataType: "string";
|
|
@@ -1712,6 +1711,7 @@ declare const oauthClient: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1712
1711
|
enumValues: [string, ...string[]];
|
|
1713
1712
|
driverParam: string;
|
|
1714
1713
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
1714
|
+
size: undefined;
|
|
1715
1715
|
}>;
|
|
1716
1716
|
requirePKCE: import("drizzle-orm/pg-core").PgColumn<{
|
|
1717
1717
|
name: "require_pkce";
|
|
@@ -1940,7 +1940,6 @@ declare const oauthRefreshToken: import("drizzle-orm/pg-core").PgTableWithColumn
|
|
|
1940
1940
|
identity: undefined;
|
|
1941
1941
|
generated: undefined;
|
|
1942
1942
|
}, {}, {
|
|
1943
|
-
size: undefined;
|
|
1944
1943
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
1945
1944
|
name: "resources";
|
|
1946
1945
|
dataType: "string";
|
|
@@ -1949,6 +1948,7 @@ declare const oauthRefreshToken: import("drizzle-orm/pg-core").PgTableWithColumn
|
|
|
1949
1948
|
enumValues: [string, ...string[]];
|
|
1950
1949
|
driverParam: string;
|
|
1951
1950
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
1951
|
+
size: undefined;
|
|
1952
1952
|
}>;
|
|
1953
1953
|
requestedUserInfoClaims: import("drizzle-orm/pg-core").PgColumn<{
|
|
1954
1954
|
name: "requested_user_info_claims";
|
|
@@ -1983,7 +1983,6 @@ declare const oauthRefreshToken: import("drizzle-orm/pg-core").PgTableWithColumn
|
|
|
1983
1983
|
identity: undefined;
|
|
1984
1984
|
generated: undefined;
|
|
1985
1985
|
}, {}, {
|
|
1986
|
-
size: undefined;
|
|
1987
1986
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
1988
1987
|
name: "requested_user_info_claims";
|
|
1989
1988
|
dataType: "string";
|
|
@@ -1992,6 +1991,7 @@ declare const oauthRefreshToken: import("drizzle-orm/pg-core").PgTableWithColumn
|
|
|
1992
1991
|
enumValues: [string, ...string[]];
|
|
1993
1992
|
driverParam: string;
|
|
1994
1993
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
1994
|
+
size: undefined;
|
|
1995
1995
|
}>;
|
|
1996
1996
|
expiresAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
1997
1997
|
name: "expires_at";
|
|
@@ -2162,7 +2162,6 @@ declare const oauthRefreshToken: import("drizzle-orm/pg-core").PgTableWithColumn
|
|
|
2162
2162
|
identity: undefined;
|
|
2163
2163
|
generated: undefined;
|
|
2164
2164
|
}, {}, {
|
|
2165
|
-
size: undefined;
|
|
2166
2165
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
2167
2166
|
name: "scopes";
|
|
2168
2167
|
dataType: "string";
|
|
@@ -2171,6 +2170,7 @@ declare const oauthRefreshToken: import("drizzle-orm/pg-core").PgTableWithColumn
|
|
|
2171
2170
|
enumValues: [string, ...string[]];
|
|
2172
2171
|
driverParam: string;
|
|
2173
2172
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
2173
|
+
size: undefined;
|
|
2174
2174
|
}>;
|
|
2175
2175
|
};
|
|
2176
2176
|
dialect: "pg";
|
|
@@ -2331,7 +2331,6 @@ declare const oauthAccessToken: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
2331
2331
|
identity: undefined;
|
|
2332
2332
|
generated: undefined;
|
|
2333
2333
|
}, {}, {
|
|
2334
|
-
size: undefined;
|
|
2335
2334
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
2336
2335
|
name: "resources";
|
|
2337
2336
|
dataType: "string";
|
|
@@ -2340,6 +2339,7 @@ declare const oauthAccessToken: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
2340
2339
|
enumValues: [string, ...string[]];
|
|
2341
2340
|
driverParam: string;
|
|
2342
2341
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
2342
|
+
size: undefined;
|
|
2343
2343
|
}>;
|
|
2344
2344
|
requestedUserInfoClaims: import("drizzle-orm/pg-core").PgColumn<{
|
|
2345
2345
|
name: "requested_user_info_claims";
|
|
@@ -2374,7 +2374,6 @@ declare const oauthAccessToken: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
2374
2374
|
identity: undefined;
|
|
2375
2375
|
generated: undefined;
|
|
2376
2376
|
}, {}, {
|
|
2377
|
-
size: undefined;
|
|
2378
2377
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
2379
2378
|
name: "requested_user_info_claims";
|
|
2380
2379
|
dataType: "string";
|
|
@@ -2383,6 +2382,7 @@ declare const oauthAccessToken: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
2383
2382
|
enumValues: [string, ...string[]];
|
|
2384
2383
|
driverParam: string;
|
|
2385
2384
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
2385
|
+
size: undefined;
|
|
2386
2386
|
}>;
|
|
2387
2387
|
refreshId: import("drizzle-orm/pg-core").PgColumn<{
|
|
2388
2388
|
name: "refresh_id";
|
|
@@ -2502,7 +2502,6 @@ declare const oauthAccessToken: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
2502
2502
|
identity: undefined;
|
|
2503
2503
|
generated: undefined;
|
|
2504
2504
|
}, {}, {
|
|
2505
|
-
size: undefined;
|
|
2506
2505
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
2507
2506
|
name: "scopes";
|
|
2508
2507
|
dataType: "string";
|
|
@@ -2511,6 +2510,7 @@ declare const oauthAccessToken: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
2511
2510
|
enumValues: [string, ...string[]];
|
|
2512
2511
|
driverParam: string;
|
|
2513
2512
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
2513
|
+
size: undefined;
|
|
2514
2514
|
}>;
|
|
2515
2515
|
};
|
|
2516
2516
|
dialect: "pg";
|
|
@@ -2620,7 +2620,6 @@ declare const oauthConsent: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
2620
2620
|
identity: undefined;
|
|
2621
2621
|
generated: undefined;
|
|
2622
2622
|
}, {}, {
|
|
2623
|
-
size: undefined;
|
|
2624
2623
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
2625
2624
|
name: "resources";
|
|
2626
2625
|
dataType: "string";
|
|
@@ -2629,6 +2628,7 @@ declare const oauthConsent: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
2629
2628
|
enumValues: [string, ...string[]];
|
|
2630
2629
|
driverParam: string;
|
|
2631
2630
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
2631
|
+
size: undefined;
|
|
2632
2632
|
}>;
|
|
2633
2633
|
requestedUserInfoClaims: import("drizzle-orm/pg-core").PgColumn<{
|
|
2634
2634
|
name: "requested_user_info_claims";
|
|
@@ -2663,7 +2663,6 @@ declare const oauthConsent: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
2663
2663
|
identity: undefined;
|
|
2664
2664
|
generated: undefined;
|
|
2665
2665
|
}, {}, {
|
|
2666
|
-
size: undefined;
|
|
2667
2666
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
2668
2667
|
name: "requested_user_info_claims";
|
|
2669
2668
|
dataType: "string";
|
|
@@ -2672,6 +2671,7 @@ declare const oauthConsent: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
2672
2671
|
enumValues: [string, ...string[]];
|
|
2673
2672
|
driverParam: string;
|
|
2674
2673
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
2674
|
+
size: undefined;
|
|
2675
2675
|
}>;
|
|
2676
2676
|
scopes: import("drizzle-orm/pg-core").PgColumn<{
|
|
2677
2677
|
name: "scopes";
|
|
@@ -2706,7 +2706,6 @@ declare const oauthConsent: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
2706
2706
|
identity: undefined;
|
|
2707
2707
|
generated: undefined;
|
|
2708
2708
|
}, {}, {
|
|
2709
|
-
size: undefined;
|
|
2710
2709
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
2711
2710
|
name: "scopes";
|
|
2712
2711
|
dataType: "string";
|
|
@@ -2715,6 +2714,7 @@ declare const oauthConsent: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
2715
2714
|
enumValues: [string, ...string[]];
|
|
2716
2715
|
driverParam: string;
|
|
2717
2716
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
2717
|
+
size: undefined;
|
|
2718
2718
|
}>;
|
|
2719
2719
|
createdAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
2720
2720
|
name: "created_at";
|
|
@@ -2909,7 +2909,6 @@ declare const oauthResource: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
2909
2909
|
identity: undefined;
|
|
2910
2910
|
generated: undefined;
|
|
2911
2911
|
}, {}, {
|
|
2912
|
-
size: undefined;
|
|
2913
2912
|
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
2914
2913
|
name: "allowed_scopes";
|
|
2915
2914
|
dataType: "string";
|
|
@@ -2918,6 +2917,7 @@ declare const oauthResource: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
2918
2917
|
enumValues: [string, ...string[]];
|
|
2919
2918
|
driverParam: string;
|
|
2920
2919
|
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
2920
|
+
size: undefined;
|
|
2921
2921
|
}>;
|
|
2922
2922
|
customClaims: import("drizzle-orm/pg-core").PgColumn<{
|
|
2923
2923
|
name: "custom_claims";
|
package/dist/schema/content.d.ts
CHANGED
|
@@ -1993,6 +1993,57 @@ declare const spaces: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
1993
1993
|
requireReview: boolean;
|
|
1994
1994
|
};
|
|
1995
1995
|
}>;
|
|
1996
|
+
coverAssetId: import("drizzle-orm/pg-core").PgColumn<{
|
|
1997
|
+
name: "cover_asset_id";
|
|
1998
|
+
tableName: "spaces";
|
|
1999
|
+
dataType: "string";
|
|
2000
|
+
columnType: "PgText";
|
|
2001
|
+
data: string;
|
|
2002
|
+
driverParam: string;
|
|
2003
|
+
notNull: false;
|
|
2004
|
+
hasDefault: false;
|
|
2005
|
+
isPrimaryKey: false;
|
|
2006
|
+
isAutoincrement: false;
|
|
2007
|
+
hasRuntimeDefault: false;
|
|
2008
|
+
enumValues: [string, ...string[]];
|
|
2009
|
+
baseColumn: never;
|
|
2010
|
+
identity: undefined;
|
|
2011
|
+
generated: undefined;
|
|
2012
|
+
}, {}, {}>;
|
|
2013
|
+
backgroundAssetId: import("drizzle-orm/pg-core").PgColumn<{
|
|
2014
|
+
name: "background_asset_id";
|
|
2015
|
+
tableName: "spaces";
|
|
2016
|
+
dataType: "string";
|
|
2017
|
+
columnType: "PgText";
|
|
2018
|
+
data: string;
|
|
2019
|
+
driverParam: string;
|
|
2020
|
+
notNull: false;
|
|
2021
|
+
hasDefault: false;
|
|
2022
|
+
isPrimaryKey: false;
|
|
2023
|
+
isAutoincrement: false;
|
|
2024
|
+
hasRuntimeDefault: false;
|
|
2025
|
+
enumValues: [string, ...string[]];
|
|
2026
|
+
baseColumn: never;
|
|
2027
|
+
identity: undefined;
|
|
2028
|
+
generated: undefined;
|
|
2029
|
+
}, {}, {}>;
|
|
2030
|
+
iconAssetId: import("drizzle-orm/pg-core").PgColumn<{
|
|
2031
|
+
name: "icon_asset_id";
|
|
2032
|
+
tableName: "spaces";
|
|
2033
|
+
dataType: "string";
|
|
2034
|
+
columnType: "PgText";
|
|
2035
|
+
data: string;
|
|
2036
|
+
driverParam: string;
|
|
2037
|
+
notNull: false;
|
|
2038
|
+
hasDefault: false;
|
|
2039
|
+
isPrimaryKey: false;
|
|
2040
|
+
isAutoincrement: false;
|
|
2041
|
+
hasRuntimeDefault: false;
|
|
2042
|
+
enumValues: [string, ...string[]];
|
|
2043
|
+
baseColumn: never;
|
|
2044
|
+
identity: undefined;
|
|
2045
|
+
generated: undefined;
|
|
2046
|
+
}, {}, {}>;
|
|
1996
2047
|
createdAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
1997
2048
|
name: "created_at";
|
|
1998
2049
|
tableName: "spaces";
|
package/dist/schema/content.js
CHANGED
|
@@ -318,6 +318,9 @@ const spaces = pgTable("spaces", {
|
|
|
318
318
|
reactions: true,
|
|
319
319
|
requireReview: false
|
|
320
320
|
}),
|
|
321
|
+
coverAssetId: text("cover_asset_id"),
|
|
322
|
+
backgroundAssetId: text("background_asset_id"),
|
|
323
|
+
iconAssetId: text("icon_asset_id"),
|
|
321
324
|
createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
|
|
322
325
|
updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow().$onUpdate(() => /* @__PURE__ */ new Date())
|
|
323
326
|
}, (t) => ({
|
|
@@ -328,7 +331,22 @@ const spaces = pgTable("spaces", {
|
|
|
328
331
|
foreignColumns: [communities.orgId, communities.id]
|
|
329
332
|
}).onDelete("cascade"),
|
|
330
333
|
capacityCk: check("spaces_capacity_check", sql`${t.capacity} is null or ${t.accessRule} <> 'all_members'`),
|
|
331
|
-
orderIdx: index("spaces_order_idx").on(t.orgId, t.communityId, t.seq)
|
|
334
|
+
orderIdx: index("spaces_order_idx").on(t.orgId, t.communityId, t.seq),
|
|
335
|
+
coverAssetFk: foreignKey({
|
|
336
|
+
columns: [t.orgId, t.coverAssetId],
|
|
337
|
+
foreignColumns: [assets.orgId, assets.id]
|
|
338
|
+
}),
|
|
339
|
+
backgroundAssetFk: foreignKey({
|
|
340
|
+
columns: [t.orgId, t.backgroundAssetId],
|
|
341
|
+
foreignColumns: [assets.orgId, assets.id]
|
|
342
|
+
}),
|
|
343
|
+
iconAssetFk: foreignKey({
|
|
344
|
+
columns: [t.orgId, t.iconAssetId],
|
|
345
|
+
foreignColumns: [assets.orgId, assets.id]
|
|
346
|
+
}),
|
|
347
|
+
coverIdx: index("spaces_cover_idx").on(t.orgId, t.coverAssetId),
|
|
348
|
+
backgroundIdx: index("spaces_background_idx").on(t.orgId, t.backgroundAssetId),
|
|
349
|
+
iconIdx: index("spaces_icon_idx").on(t.orgId, t.iconAssetId)
|
|
332
350
|
}));
|
|
333
351
|
const spaceTopics = pgTable("space_topics", {
|
|
334
352
|
orgId: text("org_id").notNull().references(() => organizations.id),
|