tangled
alpha
login
or
join now
leaflet.pub
/
leaflet
289
fork
atom
a tool for shared writing and social publishing
289
fork
atom
overview
issues
27
pulls
pipelines
fix publication_domain relation
awarm.space
9 months ago
d60fdabb
56b48888
+51
-35
4 changed files
expand all
collapse all
unified
split
app
lish
createPub
createPublication.ts
drizzle
relations.ts
schema.ts
supabase
database.types.ts
+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),
0
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),
0
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),
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
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}) => ({
0
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
0
0
0
0
0
0
0
0
0
0
0
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"}),
0
0
0
0
0
0
0
0
0
0
0
0
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(),
0
0
0
0
0
0
0
0
0
0
0
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
0
648
publication: string
649
}
650
Insert: {
651
created_at?: string
652
domain: string
0
653
publication: string
654
}
655
Update: {
656
created_at?: string
657
domain?: string
0
658
publication?: string
659
}
660
Relationships: [
···
664
isOneToOne: false
665
referencedRelation: "custom_domains"
666
referencedColumns: ["domain"]
0
0
0
0
0
0
0
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"