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