a tool for shared writing and social publishing
1import { relations } from "drizzle-orm/relations";
2import { identities, notifications, publications, documents, comments_on_documents, bsky_profiles, entity_sets, entities, facts, email_auth_tokens, poll_votes_on_entity, permission_tokens, phone_rsvps_to_entity, site_standard_publications, custom_domains, custom_domain_routes, site_standard_documents, email_subscriptions_to_entity, atp_poll_records, atp_poll_votes, bsky_follows, subscribers_to_publications, site_standard_documents_in_publications, documents_in_publications, document_mentions_in_bsky, bsky_posts, permission_token_on_homepage, publication_domains, publication_subscriptions, site_standard_subscriptions, leaflets_to_documents, permission_token_rights, leaflets_in_publications } from "./schema";
3
4export const notificationsRelations = relations(notifications, ({one}) => ({
5 identity: one(identities, {
6 fields: [notifications.recipient],
7 references: [identities.atp_did]
8 }),
9}));
10
11export const identitiesRelations = relations(identities, ({one, many}) => ({
12 notifications: many(notifications),
13 publications: many(publications),
14 email_auth_tokens: many(email_auth_tokens),
15 bsky_profiles: many(bsky_profiles),
16 permission_token: one(permission_tokens, {
17 fields: [identities.home_page],
18 references: [permission_tokens.id]
19 }),
20 site_standard_publications: many(site_standard_publications),
21 site_standard_documents: many(site_standard_documents),
22 custom_domains_identity: many(custom_domains, {
23 relationName: "custom_domains_identity_identities_email"
24 }),
25 custom_domains_identity_id: many(custom_domains, {
26 relationName: "custom_domains_identity_id_identities_id"
27 }),
28 bsky_follows_follows: many(bsky_follows, {
29 relationName: "bsky_follows_follows_identities_atp_did"
30 }),
31 bsky_follows_identity: many(bsky_follows, {
32 relationName: "bsky_follows_identity_identities_atp_did"
33 }),
34 subscribers_to_publications: many(subscribers_to_publications),
35 permission_token_on_homepages: many(permission_token_on_homepage),
36 publication_domains: many(publication_domains),
37 publication_subscriptions: many(publication_subscriptions),
38 site_standard_subscriptions: many(site_standard_subscriptions),
39}));
40
41export const publicationsRelations = relations(publications, ({one, many}) => ({
42 identity: one(identities, {
43 fields: [publications.identity_did],
44 references: [identities.atp_did]
45 }),
46 subscribers_to_publications: many(subscribers_to_publications),
47 documents_in_publications: many(documents_in_publications),
48 publication_domains: many(publication_domains),
49 publication_subscriptions: many(publication_subscriptions),
50 leaflets_in_publications: many(leaflets_in_publications),
51}));
52
53export const comments_on_documentsRelations = relations(comments_on_documents, ({one}) => ({
54 document: one(documents, {
55 fields: [comments_on_documents.document],
56 references: [documents.uri]
57 }),
58 bsky_profile: one(bsky_profiles, {
59 fields: [comments_on_documents.profile],
60 references: [bsky_profiles.did]
61 }),
62}));
63
64export const documentsRelations = relations(documents, ({many}) => ({
65 comments_on_documents: many(comments_on_documents),
66 documents_in_publications: many(documents_in_publications),
67 document_mentions_in_bskies: many(document_mentions_in_bsky),
68 leaflets_to_documents: many(leaflets_to_documents),
69 leaflets_in_publications: many(leaflets_in_publications),
70}));
71
72export const bsky_profilesRelations = relations(bsky_profiles, ({one, many}) => ({
73 comments_on_documents: many(comments_on_documents),
74 identity: one(identities, {
75 fields: [bsky_profiles.did],
76 references: [identities.atp_did]
77 }),
78}));
79
80export const entitiesRelations = relations(entities, ({one, many}) => ({
81 entity_set: one(entity_sets, {
82 fields: [entities.set],
83 references: [entity_sets.id]
84 }),
85 facts: many(facts),
86 poll_votes_on_entities_option_entity: many(poll_votes_on_entity, {
87 relationName: "poll_votes_on_entity_option_entity_entities_id"
88 }),
89 poll_votes_on_entities_poll_entity: many(poll_votes_on_entity, {
90 relationName: "poll_votes_on_entity_poll_entity_entities_id"
91 }),
92 permission_tokens: many(permission_tokens),
93 phone_rsvps_to_entities: many(phone_rsvps_to_entity),
94 email_subscriptions_to_entities: many(email_subscriptions_to_entity),
95}));
96
97export const entity_setsRelations = relations(entity_sets, ({many}) => ({
98 entities: many(entities),
99 permission_token_rights: many(permission_token_rights),
100}));
101
102export const factsRelations = relations(facts, ({one}) => ({
103 entity: one(entities, {
104 fields: [facts.entity],
105 references: [entities.id]
106 }),
107}));
108
109export const email_auth_tokensRelations = relations(email_auth_tokens, ({one}) => ({
110 identity: one(identities, {
111 fields: [email_auth_tokens.identity],
112 references: [identities.id]
113 }),
114}));
115
116export const poll_votes_on_entityRelations = relations(poll_votes_on_entity, ({one}) => ({
117 entity_option_entity: one(entities, {
118 fields: [poll_votes_on_entity.option_entity],
119 references: [entities.id],
120 relationName: "poll_votes_on_entity_option_entity_entities_id"
121 }),
122 entity_poll_entity: one(entities, {
123 fields: [poll_votes_on_entity.poll_entity],
124 references: [entities.id],
125 relationName: "poll_votes_on_entity_poll_entity_entities_id"
126 }),
127}));
128
129export const permission_tokensRelations = relations(permission_tokens, ({one, many}) => ({
130 entity: one(entities, {
131 fields: [permission_tokens.root_entity],
132 references: [entities.id]
133 }),
134 identities: many(identities),
135 custom_domain_routes_edit_permission_token: many(custom_domain_routes, {
136 relationName: "custom_domain_routes_edit_permission_token_permission_tokens_id"
137 }),
138 custom_domain_routes_view_permission_token: many(custom_domain_routes, {
139 relationName: "custom_domain_routes_view_permission_token_permission_tokens_id"
140 }),
141 email_subscriptions_to_entities: many(email_subscriptions_to_entity),
142 permission_token_on_homepages: many(permission_token_on_homepage),
143 leaflets_to_documents: many(leaflets_to_documents),
144 permission_token_rights: many(permission_token_rights),
145 leaflets_in_publications: many(leaflets_in_publications),
146}));
147
148export const phone_rsvps_to_entityRelations = relations(phone_rsvps_to_entity, ({one}) => ({
149 entity: one(entities, {
150 fields: [phone_rsvps_to_entity.entity],
151 references: [entities.id]
152 }),
153}));
154
155export const site_standard_publicationsRelations = relations(site_standard_publications, ({one, many}) => ({
156 identity: one(identities, {
157 fields: [site_standard_publications.identity_did],
158 references: [identities.atp_did]
159 }),
160 site_standard_documents_in_publications: many(site_standard_documents_in_publications),
161 site_standard_subscriptions: many(site_standard_subscriptions),
162}));
163
164export const custom_domain_routesRelations = relations(custom_domain_routes, ({one}) => ({
165 custom_domain: one(custom_domains, {
166 fields: [custom_domain_routes.domain],
167 references: [custom_domains.domain]
168 }),
169 permission_token_edit_permission_token: one(permission_tokens, {
170 fields: [custom_domain_routes.edit_permission_token],
171 references: [permission_tokens.id],
172 relationName: "custom_domain_routes_edit_permission_token_permission_tokens_id"
173 }),
174 permission_token_view_permission_token: one(permission_tokens, {
175 fields: [custom_domain_routes.view_permission_token],
176 references: [permission_tokens.id],
177 relationName: "custom_domain_routes_view_permission_token_permission_tokens_id"
178 }),
179}));
180
181export const custom_domainsRelations = relations(custom_domains, ({one, many}) => ({
182 custom_domain_routes: many(custom_domain_routes),
183 identity_identity: one(identities, {
184 fields: [custom_domains.identity],
185 references: [identities.email],
186 relationName: "custom_domains_identity_identities_email"
187 }),
188 identity_identity_id: one(identities, {
189 fields: [custom_domains.identity_id],
190 references: [identities.id],
191 relationName: "custom_domains_identity_id_identities_id"
192 }),
193 publication_domains: many(publication_domains),
194}));
195
196export const site_standard_documentsRelations = relations(site_standard_documents, ({one, many}) => ({
197 identity: one(identities, {
198 fields: [site_standard_documents.identity_did],
199 references: [identities.atp_did]
200 }),
201 site_standard_documents_in_publications: many(site_standard_documents_in_publications),
202}));
203
204export const email_subscriptions_to_entityRelations = relations(email_subscriptions_to_entity, ({one}) => ({
205 entity: one(entities, {
206 fields: [email_subscriptions_to_entity.entity],
207 references: [entities.id]
208 }),
209 permission_token: one(permission_tokens, {
210 fields: [email_subscriptions_to_entity.token],
211 references: [permission_tokens.id]
212 }),
213}));
214
215export const atp_poll_votesRelations = relations(atp_poll_votes, ({one}) => ({
216 atp_poll_record: one(atp_poll_records, {
217 fields: [atp_poll_votes.poll_uri],
218 references: [atp_poll_records.uri]
219 }),
220}));
221
222export const atp_poll_recordsRelations = relations(atp_poll_records, ({many}) => ({
223 atp_poll_votes: many(atp_poll_votes),
224}));
225
226export const bsky_followsRelations = relations(bsky_follows, ({one}) => ({
227 identity_follows: one(identities, {
228 fields: [bsky_follows.follows],
229 references: [identities.atp_did],
230 relationName: "bsky_follows_follows_identities_atp_did"
231 }),
232 identity_identity: one(identities, {
233 fields: [bsky_follows.identity],
234 references: [identities.atp_did],
235 relationName: "bsky_follows_identity_identities_atp_did"
236 }),
237}));
238
239export const subscribers_to_publicationsRelations = relations(subscribers_to_publications, ({one}) => ({
240 identity: one(identities, {
241 fields: [subscribers_to_publications.identity],
242 references: [identities.email]
243 }),
244 publication: one(publications, {
245 fields: [subscribers_to_publications.publication],
246 references: [publications.uri]
247 }),
248}));
249
250export const site_standard_documents_in_publicationsRelations = relations(site_standard_documents_in_publications, ({one}) => ({
251 site_standard_document: one(site_standard_documents, {
252 fields: [site_standard_documents_in_publications.document],
253 references: [site_standard_documents.uri]
254 }),
255 site_standard_publication: one(site_standard_publications, {
256 fields: [site_standard_documents_in_publications.publication],
257 references: [site_standard_publications.uri]
258 }),
259}));
260
261export const documents_in_publicationsRelations = relations(documents_in_publications, ({one}) => ({
262 document: one(documents, {
263 fields: [documents_in_publications.document],
264 references: [documents.uri]
265 }),
266 publication: one(publications, {
267 fields: [documents_in_publications.publication],
268 references: [publications.uri]
269 }),
270}));
271
272export const document_mentions_in_bskyRelations = relations(document_mentions_in_bsky, ({one}) => ({
273 document: one(documents, {
274 fields: [document_mentions_in_bsky.document],
275 references: [documents.uri]
276 }),
277 bsky_post: one(bsky_posts, {
278 fields: [document_mentions_in_bsky.uri],
279 references: [bsky_posts.uri]
280 }),
281}));
282
283export const bsky_postsRelations = relations(bsky_posts, ({many}) => ({
284 document_mentions_in_bskies: many(document_mentions_in_bsky),
285}));
286
287export const permission_token_on_homepageRelations = relations(permission_token_on_homepage, ({one}) => ({
288 identity: one(identities, {
289 fields: [permission_token_on_homepage.identity],
290 references: [identities.id]
291 }),
292 permission_token: one(permission_tokens, {
293 fields: [permission_token_on_homepage.token],
294 references: [permission_tokens.id]
295 }),
296}));
297
298export const publication_domainsRelations = relations(publication_domains, ({one}) => ({
299 custom_domain: one(custom_domains, {
300 fields: [publication_domains.domain],
301 references: [custom_domains.domain]
302 }),
303 identity: one(identities, {
304 fields: [publication_domains.identity],
305 references: [identities.atp_did]
306 }),
307 publication: one(publications, {
308 fields: [publication_domains.publication],
309 references: [publications.uri]
310 }),
311}));
312
313export const publication_subscriptionsRelations = relations(publication_subscriptions, ({one}) => ({
314 identity: one(identities, {
315 fields: [publication_subscriptions.identity],
316 references: [identities.atp_did]
317 }),
318 publication: one(publications, {
319 fields: [publication_subscriptions.publication],
320 references: [publications.uri]
321 }),
322}));
323
324export const site_standard_subscriptionsRelations = relations(site_standard_subscriptions, ({one}) => ({
325 identity: one(identities, {
326 fields: [site_standard_subscriptions.identity],
327 references: [identities.atp_did]
328 }),
329 site_standard_publication: one(site_standard_publications, {
330 fields: [site_standard_subscriptions.publication],
331 references: [site_standard_publications.uri]
332 }),
333}));
334
335export const leaflets_to_documentsRelations = relations(leaflets_to_documents, ({one}) => ({
336 document: one(documents, {
337 fields: [leaflets_to_documents.document],
338 references: [documents.uri]
339 }),
340 permission_token: one(permission_tokens, {
341 fields: [leaflets_to_documents.leaflet],
342 references: [permission_tokens.id]
343 }),
344}));
345
346export const permission_token_rightsRelations = relations(permission_token_rights, ({one}) => ({
347 entity_set: one(entity_sets, {
348 fields: [permission_token_rights.entity_set],
349 references: [entity_sets.id]
350 }),
351 permission_token: one(permission_tokens, {
352 fields: [permission_token_rights.token],
353 references: [permission_tokens.id]
354 }),
355}));
356
357export const leaflets_in_publicationsRelations = relations(leaflets_in_publications, ({one}) => ({
358 document: one(documents, {
359 fields: [leaflets_in_publications.doc],
360 references: [documents.uri]
361 }),
362 permission_token: one(permission_tokens, {
363 fields: [leaflets_in_publications.leaflet],
364 references: [permission_tokens.id]
365 }),
366 publication: one(publications, {
367 fields: [leaflets_in_publications.publication],
368 references: [publications.uri]
369 }),
370}));