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