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