style(database): 🚚 Reorder declarations of db tables

Putting relations next to the tables makes it easier to not break everything
This commit is contained in:
Jesse Wierzbinski 2025-01-28 17:06:28 +01:00
parent 8ac476fe66
commit c7aae24d42
No known key found for this signature in database

View file

@ -67,6 +67,15 @@ export const Emojis = pgTable("Emojis", {
category: text("category"), category: text("category"),
}); });
export const EmojisRelations = relations(Emojis, ({ one, many }) => ({
instance: one(Instances, {
fields: [Emojis.instanceId],
references: [Instances.id],
}),
users: many(EmojiToUser),
notes: many(EmojiToNote),
}));
export const PushSubscriptions = pgTable("PushSubscriptions", { export const PushSubscriptions = pgTable("PushSubscriptions", {
id: id(), id: id(),
endpoint: text("endpoint").notNull(), endpoint: text("endpoint").notNull(),
@ -231,6 +240,17 @@ export const Likes = pgTable("Likes", {
createdAt: createdAt(), createdAt: createdAt(),
}); });
export const LikesRelations = relations(Likes, ({ one }) => ({
liker: one(Users, {
fields: [Likes.likerId],
references: [Users.id],
}),
liked: one(Notes, {
fields: [Likes.likedId],
references: [Notes.id],
}),
}));
export const Relationships = pgTable("Relationships", { export const Relationships = pgTable("Relationships", {
id: id(), id: id(),
ownerId: uuid("ownerId") ownerId: uuid("ownerId")
@ -260,6 +280,19 @@ export const Relationships = pgTable("Relationships", {
updatedAt: updatedAt(), updatedAt: updatedAt(),
}); });
export const RelationshipsRelations = relations(Relationships, ({ one }) => ({
owner: one(Users, {
fields: [Relationships.ownerId],
references: [Users.id],
relationName: "RelationshipToOwner",
}),
subject: one(Users, {
fields: [Relationships.subjectId],
references: [Users.id],
relationName: "RelationshipToSubject",
}),
}));
export const Applications = pgTable( export const Applications = pgTable(
"Applications", "Applications",
{ {
@ -303,6 +336,17 @@ export const Tokens = pgTable("Tokens", {
}), }),
}); });
export const TokensRelations = relations(Tokens, ({ one }) => ({
user: one(Users, {
fields: [Tokens.userId],
references: [Users.id],
}),
application: one(Applications, {
fields: [Tokens.applicationId],
references: [Applications.id],
}),
}));
export const Medias = pgTable("Medias", { export const Medias = pgTable("Medias", {
id: id(), id: id(),
content: jsonb("content").notNull().$type<ContentFormat>(), content: jsonb("content").notNull().$type<ContentFormat>(),
@ -311,6 +355,10 @@ export const Medias = pgTable("Medias", {
blurhash: text("blurhash"), blurhash: text("blurhash"),
}); });
export const MediasRelations = relations(Medias, ({ many }) => ({
notes: many(Notes),
}));
export const Notifications = pgTable("Notifications", { export const Notifications = pgTable("Notifications", {
id: id(), id: id(),
type: text("type").notNull(), type: text("type").notNull(),
@ -334,6 +382,23 @@ export const Notifications = pgTable("Notifications", {
dismissed: boolean("dismissed").default(false).notNull(), dismissed: boolean("dismissed").default(false).notNull(),
}); });
export const NotificationsRelations = relations(Notifications, ({ one }) => ({
account: one(Users, {
fields: [Notifications.accountId],
references: [Users.id],
relationName: "NotificationToAccount",
}),
notified: one(Users, {
fields: [Notifications.notifiedId],
references: [Users.id],
relationName: "NotificationToNotified",
}),
note: one(Notes, {
fields: [Notifications.noteId],
references: [Notes.id],
}),
}));
export const Notes = pgTable("Notes", { export const Notes = pgTable("Notes", {
id: id(), id: id(),
uri: uri(), uri: uri(),
@ -369,6 +434,50 @@ export const Notes = pgTable("Notes", {
contentSource: text("content_source").default("").notNull(), contentSource: text("content_source").default("").notNull(),
}); });
export const NotesRelations = relations(Notes, ({ many, one }) => ({
emojis: many(EmojiToNote),
author: one(Users, {
fields: [Notes.authorId],
references: [Users.id],
relationName: "NoteToAuthor",
}),
attachments: many(MediasToNotes, {
relationName: "AttachmentToNote",
}),
mentions: many(NoteToMentions),
reblog: one(Notes, {
fields: [Notes.reblogId],
references: [Notes.id],
relationName: "NoteToReblogs",
}),
usersThatHavePinned: many(UserToPinnedNotes),
reply: one(Notes, {
fields: [Notes.replyId],
references: [Notes.id],
relationName: "NoteToReplies",
}),
quote: one(Notes, {
fields: [Notes.quotingId],
references: [Notes.id],
relationName: "NoteToQuotes",
}),
application: one(Applications, {
fields: [Notes.applicationId],
references: [Applications.id],
}),
quotes: many(Notes, {
relationName: "NoteToQuotes",
}),
replies: many(Notes, {
relationName: "NoteToReplies",
}),
likes: many(Likes),
reblogs: many(Notes, {
relationName: "NoteToReblogs",
}),
notifications: many(Notifications),
}));
export const Instances = pgTable("Instances", { export const Instances = pgTable("Instances", {
id: id(), id: id(),
baseUrl: text("base_url").notNull(), baseUrl: text("base_url").notNull(),
@ -387,6 +496,11 @@ export const Instances = pgTable("Instances", {
extensions: jsonb("extensions").$type<InstanceMetadata["extensions"]>(), extensions: jsonb("extensions").$type<InstanceMetadata["extensions"]>(),
}); });
export const InstancesRelations = relations(Instances, ({ many }) => ({
users: many(Users),
emojis: many(Emojis),
}));
export const OpenIdAccounts = pgTable("OpenIdAccounts", { export const OpenIdAccounts = pgTable("OpenIdAccounts", {
id: id(), id: id(),
userId: uuid("userId").references(() => Users.id, { userId: uuid("userId").references(() => Users.id, {
@ -460,6 +574,38 @@ export const Users = pgTable(
], ],
); );
export const UsersRelations = relations(Users, ({ many, one }) => ({
emojis: many(EmojiToUser),
pinnedNotes: many(UserToPinnedNotes),
notes: many(Notes, {
relationName: "NoteToAuthor",
}),
likes: many(Likes),
relationships: many(Relationships, {
relationName: "RelationshipToOwner",
}),
relationshipSubjects: many(Relationships, {
relationName: "RelationshipToSubject",
}),
notificationsMade: many(Notifications, {
relationName: "NotificationToAccount",
}),
notificationsReceived: many(Notifications, {
relationName: "NotificationToNotified",
}),
openIdAccounts: many(OpenIdAccounts),
flags: many(Flags),
modNotes: many(ModNotes),
modTags: many(ModTags),
tokens: many(Tokens),
instance: one(Instances, {
fields: [Users.instanceId],
references: [Instances.id],
}),
mentionedIn: many(NoteToMentions),
roles: many(RoleToUsers),
}));
export const OpenIdLoginFlows = pgTable("OpenIdLoginFlows", { export const OpenIdLoginFlows = pgTable("OpenIdLoginFlows", {
id: id(), id: id(),
codeVerifier: text("code_verifier").notNull(), codeVerifier: text("code_verifier").notNull(),
@ -743,6 +889,17 @@ export const EmojiToNote = pgTable(
], ],
); );
export const EmojisToNotesRelations = relations(EmojiToNote, ({ one }) => ({
emoji: one(Emojis, {
fields: [EmojiToNote.emojiId],
references: [Emojis.id],
}),
note: one(Notes, {
fields: [EmojiToNote.noteId],
references: [Notes.id],
}),
}));
export const NoteToMentions = pgTable( export const NoteToMentions = pgTable(
"NoteToMentions", "NoteToMentions",
{ {
@ -765,6 +922,20 @@ export const NoteToMentions = pgTable(
], ],
); );
export const NotesToMentionsRelations = relations(
NoteToMentions,
({ one }) => ({
note: one(Notes, {
fields: [NoteToMentions.noteId],
references: [Notes.id],
}),
user: one(Users, {
fields: [NoteToMentions.userId],
references: [Users.id],
}),
}),
);
export const UserToPinnedNotes = pgTable( export const UserToPinnedNotes = pgTable(
"UserToPinnedNotes", "UserToPinnedNotes",
{ {
@ -787,9 +958,19 @@ export const UserToPinnedNotes = pgTable(
], ],
); );
export const MediasRelations = relations(Medias, ({ many }) => ({ export const UserToPinnedNotesRelations = relations(
notes: many(Notes), UserToPinnedNotes,
})); ({ one }) => ({
note: one(Notes, {
fields: [UserToPinnedNotes.noteId],
references: [Notes.id],
}),
user: one(Users, {
fields: [UserToPinnedNotes.userId],
references: [Users.id],
}),
}),
);
export const MediasToNotes = pgTable( export const MediasToNotes = pgTable(
"MediasToNote", "MediasToNote",
@ -821,181 +1002,3 @@ export const MediasToNotesRelations = relations(MediasToNotes, ({ one }) => ({
relationName: "AttachmentToNote", relationName: "AttachmentToNote",
}), }),
})); }));
export const UsersRelations = relations(Users, ({ many, one }) => ({
emojis: many(EmojiToUser),
pinnedNotes: many(UserToPinnedNotes),
notes: many(Notes, {
relationName: "NoteToAuthor",
}),
likes: many(Likes),
relationships: many(Relationships, {
relationName: "RelationshipToOwner",
}),
relationshipSubjects: many(Relationships, {
relationName: "RelationshipToSubject",
}),
notificationsMade: many(Notifications, {
relationName: "NotificationToAccount",
}),
notificationsReceived: many(Notifications, {
relationName: "NotificationToNotified",
}),
openIdAccounts: many(OpenIdAccounts),
flags: many(Flags),
modNotes: many(ModNotes),
modTags: many(ModTags),
tokens: many(Tokens),
instance: one(Instances, {
fields: [Users.instanceId],
references: [Instances.id],
}),
mentionedIn: many(NoteToMentions),
roles: many(RoleToUsers),
}));
export const RelationshipsRelations = relations(Relationships, ({ one }) => ({
owner: one(Users, {
fields: [Relationships.ownerId],
references: [Users.id],
relationName: "RelationshipToOwner",
}),
subject: one(Users, {
fields: [Relationships.subjectId],
references: [Users.id],
relationName: "RelationshipToSubject",
}),
}));
export const TokensRelations = relations(Tokens, ({ one }) => ({
user: one(Users, {
fields: [Tokens.userId],
references: [Users.id],
}),
application: one(Applications, {
fields: [Tokens.applicationId],
references: [Applications.id],
}),
}));
export const NotesToUsersRelations = relations(NoteToMentions, ({ one }) => ({
note: one(Notes, {
fields: [NoteToMentions.noteId],
references: [Notes.id],
}),
user: one(Users, {
fields: [NoteToMentions.userId],
references: [Users.id],
}),
}));
export const UserToPinnedNotesRelations = relations(
UserToPinnedNotes,
({ one }) => ({
note: one(Notes, {
fields: [UserToPinnedNotes.noteId],
references: [Notes.id],
}),
user: one(Users, {
fields: [UserToPinnedNotes.userId],
references: [Users.id],
}),
}),
);
export const NotesRelations = relations(Notes, ({ many, one }) => ({
emojis: many(EmojiToNote),
author: one(Users, {
fields: [Notes.authorId],
references: [Users.id],
relationName: "NoteToAuthor",
}),
attachments: many(MediasToNotes, {
relationName: "AttachmentToNote",
}),
mentions: many(NoteToMentions),
reblog: one(Notes, {
fields: [Notes.reblogId],
references: [Notes.id],
relationName: "NoteToReblogs",
}),
usersThatHavePinned: many(UserToPinnedNotes),
reply: one(Notes, {
fields: [Notes.replyId],
references: [Notes.id],
relationName: "NoteToReplies",
}),
quote: one(Notes, {
fields: [Notes.quotingId],
references: [Notes.id],
relationName: "NoteToQuotes",
}),
application: one(Applications, {
fields: [Notes.applicationId],
references: [Applications.id],
}),
quotes: many(Notes, {
relationName: "NoteToQuotes",
}),
replies: many(Notes, {
relationName: "NoteToReplies",
}),
likes: many(Likes),
reblogs: many(Notes, {
relationName: "NoteToReblogs",
}),
notifications: many(Notifications),
}));
export const NotificationsRelations = relations(Notifications, ({ one }) => ({
account: one(Users, {
fields: [Notifications.accountId],
references: [Users.id],
relationName: "NotificationToAccount",
}),
notified: one(Users, {
fields: [Notifications.notifiedId],
references: [Users.id],
relationName: "NotificationToNotified",
}),
note: one(Notes, {
fields: [Notifications.noteId],
references: [Notes.id],
}),
}));
export const LikesRelations = relations(Likes, ({ one }) => ({
liker: one(Users, {
fields: [Likes.likerId],
references: [Users.id],
}),
liked: one(Notes, {
fields: [Likes.likedId],
references: [Notes.id],
}),
}));
export const EmojisRelations = relations(Emojis, ({ one, many }) => ({
instance: one(Instances, {
fields: [Emojis.instanceId],
references: [Instances.id],
}),
users: many(EmojiToUser),
notes: many(EmojiToNote),
}));
export const InstancesRelations = relations(Instances, ({ many }) => ({
users: many(Users),
emojis: many(Emojis),
}));
export const EmojisToNotesRelations = relations(EmojiToNote, ({ one }) => ({
emoji: one(Emojis, {
fields: [EmojiToNote.emojiId],
references: [Emojis.id],
}),
note: one(Notes, {
fields: [EmojiToNote.noteId],
references: [Notes.id],
}),
}));