a tool for shared writing and social publishing

fix publication_domain relation

+51 -35
+2 -2
app/lish/createPub/createPublication.ts
··· 98 } 99 await supabaseServerClient 100 .from("custom_domains") 101 - .insert({ domain, identity: identity.id, confirmed: true }); 102 await supabaseServerClient 103 .from("publication_domains") 104 - .insert({ domain, publication: result.uri }); 105 106 return { success: true, publication }; 107 }
··· 98 } 99 await supabaseServerClient 100 .from("custom_domains") 101 + .insert({ domain, confirmed: true }); 102 await supabaseServerClient 103 .from("publication_domains") 104 + .insert({ domain, publication: result.uri, identity: identity.atp_did }); 105 106 return { success: true, publication }; 107 }
+23 -18
drizzle/relations.ts
··· 1 import { relations } from "drizzle-orm/relations"; 2 - 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"; 3 4 export const factsRelations = relations(facts, ({one}) => ({ 5 entity: one(entities, { ··· 57 custom_domains: many(custom_domains), 58 subscribers_to_publications: many(subscribers_to_publications), 59 permission_token_on_homepages: many(permission_token_on_homepage), 60 })); 61 62 export const email_subscriptions_to_entityRelations = relations(email_subscriptions_to_entity, ({one}) => ({ ··· 123 }), 124 })); 125 126 - export const publication_domainsRelations = relations(publication_domains, ({one}) => ({ 127 - custom_domain: one(custom_domains, { 128 - fields: [publication_domains.domain], 129 - references: [custom_domains.domain] 130 }), 131 publication: one(publications, { 132 - fields: [publication_domains.publication], 133 references: [publications.uri] 134 }), 135 })); 136 137 export const publicationsRelations = relations(publications, ({many}) => ({ 138 - publication_domains: many(publication_domains), 139 subscribers_to_publications: many(subscribers_to_publications), 140 documents_in_publications: many(documents_in_publications), 141 leaflets_in_publications: many(leaflets_in_publications), 142 })); 143 144 - export const subscribers_to_publicationsRelations = relations(subscribers_to_publications, ({one}) => ({ 145 - identity: one(identities, { 146 - fields: [subscribers_to_publications.identity], 147 - references: [identities.email] 148 - }), 149 - publication: one(publications, { 150 - fields: [subscribers_to_publications.publication], 151 - references: [publications.uri] 152 - }), 153 - })); 154 - 155 export const permission_token_on_homepageRelations = relations(permission_token_on_homepage, ({one}) => ({ 156 identity: one(identities, { 157 fields: [permission_token_on_homepage.identity], ··· 177 export const documentsRelations = relations(documents, ({many}) => ({ 178 documents_in_publications: many(documents_in_publications), 179 leaflets_in_publications: many(leaflets_in_publications), 180 })); 181 182 export const leaflets_in_publicationsRelations = relations(leaflets_in_publications, ({one}) => ({
··· 1 import { relations } from "drizzle-orm/relations"; 2 + 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"; 3 4 export const factsRelations = relations(facts, ({one}) => ({ 5 entity: one(entities, { ··· 57 custom_domains: many(custom_domains), 58 subscribers_to_publications: many(subscribers_to_publications), 59 permission_token_on_homepages: many(permission_token_on_homepage), 60 + publication_domains: many(publication_domains), 61 })); 62 63 export const email_subscriptions_to_entityRelations = relations(email_subscriptions_to_entity, ({one}) => ({ ··· 124 }), 125 })); 126 127 + export const subscribers_to_publicationsRelations = relations(subscribers_to_publications, ({one}) => ({ 128 + identity: one(identities, { 129 + fields: [subscribers_to_publications.identity], 130 + references: [identities.email] 131 }), 132 publication: one(publications, { 133 + fields: [subscribers_to_publications.publication], 134 references: [publications.uri] 135 }), 136 })); 137 138 export const publicationsRelations = relations(publications, ({many}) => ({ 139 subscribers_to_publications: many(subscribers_to_publications), 140 documents_in_publications: many(documents_in_publications), 141 + publication_domains: many(publication_domains), 142 leaflets_in_publications: many(leaflets_in_publications), 143 })); 144 145 export const permission_token_on_homepageRelations = relations(permission_token_on_homepage, ({one}) => ({ 146 identity: one(identities, { 147 fields: [permission_token_on_homepage.identity], ··· 167 export const documentsRelations = relations(documents, ({many}) => ({ 168 documents_in_publications: many(documents_in_publications), 169 leaflets_in_publications: many(leaflets_in_publications), 170 + })); 171 + 172 + export const publication_domainsRelations = relations(publication_domains, ({one}) => ({ 173 + custom_domain: one(custom_domains, { 174 + fields: [publication_domains.domain], 175 + references: [custom_domains.domain] 176 + }), 177 + identity: one(identities, { 178 + fields: [publication_domains.identity], 179 + references: [identities.atp_did] 180 + }), 181 + publication: one(publications, { 182 + fields: [publication_domains.publication], 183 + references: [publications.uri] 184 + }), 185 })); 186 187 export const leaflets_in_publicationsRelations = relations(leaflets_in_publications, ({one}) => ({
+13 -12
drizzle/schema.ts
··· 147 148 export const custom_domains = pgTable("custom_domains", { 149 domain: text("domain").primaryKey().notNull(), 150 - identity: text("identity").default('').notNull().references(() => identities.email, { onDelete: "cascade", onUpdate: "cascade" } ), 151 confirmed: boolean("confirmed").notNull(), 152 created_at: timestamp("created_at", { withTimezone: true, mode: 'string' }).defaultNow().notNull(), 153 }); ··· 158 poll_entity: uuid("poll_entity").notNull().references(() => entities.id, { onDelete: "cascade", onUpdate: "cascade" } ), 159 option_entity: uuid("option_entity").notNull().references(() => entities.id, { onDelete: "cascade", onUpdate: "cascade" } ), 160 voter_token: uuid("voter_token").notNull(), 161 - }); 162 - 163 - export const publication_domains = pgTable("publication_domains", { 164 - publication: text("publication").notNull().references(() => publications.uri, { onDelete: "cascade" } ), 165 - domain: text("domain").notNull().references(() => custom_domains.domain, { onDelete: "cascade" } ), 166 - created_at: timestamp("created_at", { withTimezone: true, mode: 'string' }).defaultNow().notNull(), 167 - }, 168 - (table) => { 169 - return { 170 - publication_domains_pkey: primaryKey({ columns: [table.publication, table.domain], name: "publication_domains_pkey"}), 171 - } 172 }); 173 174 export const subscribers_to_publications = pgTable("subscribers_to_publications", { ··· 201 (table) => { 202 return { 203 documents_in_publications_pkey: primaryKey({ columns: [table.publication, table.document], name: "documents_in_publications_pkey"}), 204 } 205 }); 206
··· 147 148 export const custom_domains = pgTable("custom_domains", { 149 domain: text("domain").primaryKey().notNull(), 150 + identity: text("identity").default('').references(() => identities.email, { onDelete: "cascade", onUpdate: "cascade" } ), 151 confirmed: boolean("confirmed").notNull(), 152 created_at: timestamp("created_at", { withTimezone: true, mode: 'string' }).defaultNow().notNull(), 153 }); ··· 158 poll_entity: uuid("poll_entity").notNull().references(() => entities.id, { onDelete: "cascade", onUpdate: "cascade" } ), 159 option_entity: uuid("option_entity").notNull().references(() => entities.id, { onDelete: "cascade", onUpdate: "cascade" } ), 160 voter_token: uuid("voter_token").notNull(), 161 }); 162 163 export const subscribers_to_publications = pgTable("subscribers_to_publications", { ··· 190 (table) => { 191 return { 192 documents_in_publications_pkey: primaryKey({ columns: [table.publication, table.document], name: "documents_in_publications_pkey"}), 193 + } 194 + }); 195 + 196 + export const publication_domains = pgTable("publication_domains", { 197 + publication: text("publication").notNull().references(() => publications.uri, { onDelete: "cascade" } ), 198 + domain: text("domain").notNull().references(() => custom_domains.domain, { onDelete: "cascade" } ), 199 + created_at: timestamp("created_at", { withTimezone: true, mode: 'string' }).defaultNow().notNull(), 200 + identity: text("identity").notNull().references(() => identities.atp_did, { onDelete: "cascade", onUpdate: "cascade" } ), 201 + }, 202 + (table) => { 203 + return { 204 + publication_domains_pkey: primaryKey({ columns: [table.publication, table.domain], name: "publication_domains_pkey"}), 205 } 206 }); 207
+13 -3
supabase/database.types.ts
··· 88 confirmed: boolean 89 created_at: string 90 domain: string 91 - identity: string 92 } 93 Insert: { 94 confirmed: boolean 95 created_at?: string 96 domain: string 97 - identity?: string 98 } 99 Update: { 100 confirmed?: boolean 101 created_at?: string 102 domain?: string 103 - identity?: string 104 } 105 Relationships: [ 106 { ··· 645 Row: { 646 created_at: string 647 domain: string 648 publication: string 649 } 650 Insert: { 651 created_at?: string 652 domain: string 653 publication: string 654 } 655 Update: { 656 created_at?: string 657 domain?: string 658 publication?: string 659 } 660 Relationships: [ ··· 664 isOneToOne: false 665 referencedRelation: "custom_domains" 666 referencedColumns: ["domain"] 667 }, 668 { 669 foreignKeyName: "publication_domains_publication_fkey"
··· 88 confirmed: boolean 89 created_at: string 90 domain: string 91 + identity: string | null 92 } 93 Insert: { 94 confirmed: boolean 95 created_at?: string 96 domain: string 97 + identity?: string | null 98 } 99 Update: { 100 confirmed?: boolean 101 created_at?: string 102 domain?: string 103 + identity?: string | null 104 } 105 Relationships: [ 106 { ··· 645 Row: { 646 created_at: string 647 domain: string 648 + identity: string 649 publication: string 650 } 651 Insert: { 652 created_at?: string 653 domain: string 654 + identity: string 655 publication: string 656 } 657 Update: { 658 created_at?: string 659 domain?: string 660 + identity?: string 661 publication?: string 662 } 663 Relationships: [ ··· 667 isOneToOne: false 668 referencedRelation: "custom_domains" 669 referencedColumns: ["domain"] 670 + }, 671 + { 672 + foreignKeyName: "publication_domains_identity_fkey" 673 + columns: ["identity"] 674 + isOneToOne: false 675 + referencedRelation: "identities" 676 + referencedColumns: ["atp_did"] 677 }, 678 { 679 foreignKeyName: "publication_domains_publication_fkey"