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
98
}
99
99
await supabaseServerClient
100
100
.from("custom_domains")
101
101
-
.insert({ domain, identity: identity.id, confirmed: true });
101
101
+
.insert({ domain, confirmed: true });
102
102
await supabaseServerClient
103
103
.from("publication_domains")
104
104
-
.insert({ domain, publication: result.uri });
104
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
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
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
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
126
-
export const publication_domainsRelations = relations(publication_domains, ({one}) => ({
127
127
-
custom_domain: one(custom_domains, {
128
128
-
fields: [publication_domains.domain],
129
129
-
references: [custom_domains.domain]
127
127
+
export const subscribers_to_publicationsRelations = relations(subscribers_to_publications, ({one}) => ({
128
128
+
identity: one(identities, {
129
129
+
fields: [subscribers_to_publications.identity],
130
130
+
references: [identities.email]
130
131
}),
131
132
publication: one(publications, {
132
132
-
fields: [publication_domains.publication],
133
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
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
141
+
publication_domains: many(publication_domains),
141
142
leaflets_in_publications: many(leaflets_in_publications),
142
143
}));
143
144
144
144
-
export const subscribers_to_publicationsRelations = relations(subscribers_to_publications, ({one}) => ({
145
145
-
identity: one(identities, {
146
146
-
fields: [subscribers_to_publications.identity],
147
147
-
references: [identities.email]
148
148
-
}),
149
149
-
publication: one(publications, {
150
150
-
fields: [subscribers_to_publications.publication],
151
151
-
references: [publications.uri]
152
152
-
}),
153
153
-
}));
154
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
170
+
}));
171
171
+
172
172
+
export const publication_domainsRelations = relations(publication_domains, ({one}) => ({
173
173
+
custom_domain: one(custom_domains, {
174
174
+
fields: [publication_domains.domain],
175
175
+
references: [custom_domains.domain]
176
176
+
}),
177
177
+
identity: one(identities, {
178
178
+
fields: [publication_domains.identity],
179
179
+
references: [identities.atp_did]
180
180
+
}),
181
181
+
publication: one(publications, {
182
182
+
fields: [publication_domains.publication],
183
183
+
references: [publications.uri]
184
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
150
-
identity: text("identity").default('').notNull().references(() => identities.email, { onDelete: "cascade", onUpdate: "cascade" } ),
150
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
161
-
});
162
162
-
163
163
-
export const publication_domains = pgTable("publication_domains", {
164
164
-
publication: text("publication").notNull().references(() => publications.uri, { onDelete: "cascade" } ),
165
165
-
domain: text("domain").notNull().references(() => custom_domains.domain, { onDelete: "cascade" } ),
166
166
-
created_at: timestamp("created_at", { withTimezone: true, mode: 'string' }).defaultNow().notNull(),
167
167
-
},
168
168
-
(table) => {
169
169
-
return {
170
170
-
publication_domains_pkey: primaryKey({ columns: [table.publication, table.domain], name: "publication_domains_pkey"}),
171
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
193
+
}
194
194
+
});
195
195
+
196
196
+
export const publication_domains = pgTable("publication_domains", {
197
197
+
publication: text("publication").notNull().references(() => publications.uri, { onDelete: "cascade" } ),
198
198
+
domain: text("domain").notNull().references(() => custom_domains.domain, { onDelete: "cascade" } ),
199
199
+
created_at: timestamp("created_at", { withTimezone: true, mode: 'string' }).defaultNow().notNull(),
200
200
+
identity: text("identity").notNull().references(() => identities.atp_did, { onDelete: "cascade", onUpdate: "cascade" } ),
201
201
+
},
202
202
+
(table) => {
203
203
+
return {
204
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
91
-
identity: string
91
91
+
identity: string | null
92
92
}
93
93
Insert: {
94
94
confirmed: boolean
95
95
created_at?: string
96
96
domain: string
97
97
-
identity?: string
97
97
+
identity?: string | null
98
98
}
99
99
Update: {
100
100
confirmed?: boolean
101
101
created_at?: string
102
102
domain?: string
103
103
-
identity?: string
103
103
+
identity?: string | null
104
104
}
105
105
Relationships: [
106
106
{
···
645
645
Row: {
646
646
created_at: string
647
647
domain: string
648
648
+
identity: string
648
649
publication: string
649
650
}
650
651
Insert: {
651
652
created_at?: string
652
653
domain: string
654
654
+
identity: string
653
655
publication: string
654
656
}
655
657
Update: {
656
658
created_at?: string
657
659
domain?: string
660
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
670
+
},
671
671
+
{
672
672
+
foreignKeyName: "publication_domains_identity_fkey"
673
673
+
columns: ["identity"]
674
674
+
isOneToOne: false
675
675
+
referencedRelation: "identities"
676
676
+
referencedColumns: ["atp_did"]
667
677
},
668
678
{
669
679
foreignKeyName: "publication_domains_publication_fkey"