a tool for shared writing and social publishing

fix publication_domain relation

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