From d60fdabbf52f45b0ebb890c22b8baed7fded7279 Mon Sep 17 00:00:00 2001 From: Jared Pereira Date: Wed, 21 May 2025 14:21:53 -0400 Subject: [PATCH] fix publication_domain relation --- app/lish/createPub/createPublication.ts | 4 +-- drizzle/relations.ts | 41 ++++++++++++++----------- drizzle/schema.ts | 25 +++++++-------- supabase/database.types.ts | 16 ++++++++-- 4 files changed, 51 insertions(+), 35 deletions(-) diff --git a/app/lish/createPub/createPublication.ts b/app/lish/createPub/createPublication.ts index fc6572d5..1101baf4 100644 --- a/app/lish/createPub/createPublication.ts +++ b/app/lish/createPub/createPublication.ts @@ -98,10 +98,10 @@ export async function createPublication({ } await supabaseServerClient .from("custom_domains") - .insert({ domain, identity: identity.id, confirmed: true }); + .insert({ domain, confirmed: true }); await supabaseServerClient .from("publication_domains") - .insert({ domain, publication: result.uri }); + .insert({ domain, publication: result.uri, identity: identity.atp_did }); return { success: true, publication }; } diff --git a/drizzle/relations.ts b/drizzle/relations.ts index 6aa7a3d9..1a0d8a8e 100644 --- a/drizzle/relations.ts +++ b/drizzle/relations.ts @@ -1,5 +1,5 @@ import { relations } from "drizzle-orm/relations"; -import { entities, facts, entity_sets, permission_tokens, identities, email_subscriptions_to_entity, email_auth_tokens, phone_rsvps_to_entity, custom_domains, custom_domain_routes, poll_votes_on_entity, publication_domains, publications, subscribers_to_publications, permission_token_on_homepage, documents, documents_in_publications, leaflets_in_publications, permission_token_rights } from "./schema"; +import { entities, facts, entity_sets, permission_tokens, identities, email_subscriptions_to_entity, email_auth_tokens, phone_rsvps_to_entity, custom_domains, custom_domain_routes, poll_votes_on_entity, subscribers_to_publications, publications, permission_token_on_homepage, documents, documents_in_publications, publication_domains, leaflets_in_publications, permission_token_rights } from "./schema"; export const factsRelations = relations(facts, ({one}) => ({ entity: one(entities, { @@ -57,6 +57,7 @@ export const identitiesRelations = relations(identities, ({one, many}) => ({ custom_domains: many(custom_domains), subscribers_to_publications: many(subscribers_to_publications), permission_token_on_homepages: many(permission_token_on_homepage), + publication_domains: many(publication_domains), })); export const email_subscriptions_to_entityRelations = relations(email_subscriptions_to_entity, ({one}) => ({ @@ -123,35 +124,24 @@ export const poll_votes_on_entityRelations = relations(poll_votes_on_entity, ({o }), })); -export const publication_domainsRelations = relations(publication_domains, ({one}) => ({ - custom_domain: one(custom_domains, { - fields: [publication_domains.domain], - references: [custom_domains.domain] +export const subscribers_to_publicationsRelations = relations(subscribers_to_publications, ({one}) => ({ + identity: one(identities, { + fields: [subscribers_to_publications.identity], + references: [identities.email] }), publication: one(publications, { - fields: [publication_domains.publication], + fields: [subscribers_to_publications.publication], references: [publications.uri] }), })); export const publicationsRelations = relations(publications, ({many}) => ({ - publication_domains: many(publication_domains), subscribers_to_publications: many(subscribers_to_publications), documents_in_publications: many(documents_in_publications), + publication_domains: many(publication_domains), leaflets_in_publications: many(leaflets_in_publications), })); -export const subscribers_to_publicationsRelations = relations(subscribers_to_publications, ({one}) => ({ - identity: one(identities, { - fields: [subscribers_to_publications.identity], - references: [identities.email] - }), - publication: one(publications, { - fields: [subscribers_to_publications.publication], - references: [publications.uri] - }), -})); - export const permission_token_on_homepageRelations = relations(permission_token_on_homepage, ({one}) => ({ identity: one(identities, { fields: [permission_token_on_homepage.identity], @@ -179,6 +169,21 @@ export const documentsRelations = relations(documents, ({many}) => ({ leaflets_in_publications: many(leaflets_in_publications), })); +export const publication_domainsRelations = relations(publication_domains, ({one}) => ({ + custom_domain: one(custom_domains, { + fields: [publication_domains.domain], + references: [custom_domains.domain] + }), + identity: one(identities, { + fields: [publication_domains.identity], + references: [identities.atp_did] + }), + publication: one(publications, { + fields: [publication_domains.publication], + references: [publications.uri] + }), +})); + export const leaflets_in_publicationsRelations = relations(leaflets_in_publications, ({one}) => ({ document: one(documents, { fields: [leaflets_in_publications.doc], diff --git a/drizzle/schema.ts b/drizzle/schema.ts index c60e5c9a..c54ed595 100644 --- a/drizzle/schema.ts +++ b/drizzle/schema.ts @@ -147,7 +147,7 @@ export const custom_domain_routes = pgTable("custom_domain_routes", { export const custom_domains = pgTable("custom_domains", { domain: text("domain").primaryKey().notNull(), - identity: text("identity").default('').notNull().references(() => identities.email, { onDelete: "cascade", onUpdate: "cascade" } ), + identity: text("identity").default('').references(() => identities.email, { onDelete: "cascade", onUpdate: "cascade" } ), confirmed: boolean("confirmed").notNull(), created_at: timestamp("created_at", { withTimezone: true, mode: 'string' }).defaultNow().notNull(), }); @@ -160,17 +160,6 @@ export const poll_votes_on_entity = pgTable("poll_votes_on_entity", { voter_token: uuid("voter_token").notNull(), }); -export const publication_domains = pgTable("publication_domains", { - publication: text("publication").notNull().references(() => publications.uri, { onDelete: "cascade" } ), - domain: text("domain").notNull().references(() => custom_domains.domain, { onDelete: "cascade" } ), - created_at: timestamp("created_at", { withTimezone: true, mode: 'string' }).defaultNow().notNull(), -}, -(table) => { - return { - publication_domains_pkey: primaryKey({ columns: [table.publication, table.domain], name: "publication_domains_pkey"}), - } -}); - export const subscribers_to_publications = pgTable("subscribers_to_publications", { identity: text("identity").notNull().references(() => identities.email, { onUpdate: "cascade" } ), publication: text("publication").notNull().references(() => publications.uri), @@ -204,6 +193,18 @@ export const documents_in_publications = pgTable("documents_in_publications", { } }); +export const publication_domains = pgTable("publication_domains", { + publication: text("publication").notNull().references(() => publications.uri, { onDelete: "cascade" } ), + domain: text("domain").notNull().references(() => custom_domains.domain, { onDelete: "cascade" } ), + created_at: timestamp("created_at", { withTimezone: true, mode: 'string' }).defaultNow().notNull(), + identity: text("identity").notNull().references(() => identities.atp_did, { onDelete: "cascade", onUpdate: "cascade" } ), +}, +(table) => { + return { + publication_domains_pkey: primaryKey({ columns: [table.publication, table.domain], name: "publication_domains_pkey"}), + } +}); + export const leaflets_in_publications = pgTable("leaflets_in_publications", { publication: text("publication").notNull().references(() => publications.uri), doc: text("doc").default('').references(() => documents.uri), diff --git a/supabase/database.types.ts b/supabase/database.types.ts index be2a011e..11e26291 100644 --- a/supabase/database.types.ts +++ b/supabase/database.types.ts @@ -88,19 +88,19 @@ export type Database = { confirmed: boolean created_at: string domain: string - identity: string + identity: string | null } Insert: { confirmed: boolean created_at?: string domain: string - identity?: string + identity?: string | null } Update: { confirmed?: boolean created_at?: string domain?: string - identity?: string + identity?: string | null } Relationships: [ { @@ -645,16 +645,19 @@ export type Database = { Row: { created_at: string domain: string + identity: string publication: string } Insert: { created_at?: string domain: string + identity: string publication: string } Update: { created_at?: string domain?: string + identity?: string publication?: string } Relationships: [ @@ -665,6 +668,13 @@ export type Database = { referencedRelation: "custom_domains" referencedColumns: ["domain"] }, + { + foreignKeyName: "publication_domains_identity_fkey" + columns: ["identity"] + isOneToOne: false + referencedRelation: "identities" + referencedColumns: ["atp_did"] + }, { foreignKeyName: "publication_domains_publication_fkey" columns: ["publication"] -- 2.54.0