integratedhub/drizzle/relations.ts
2026-02-14 02:20:19 +00:00

287 lines
7.0 KiB
TypeScript

import { relations } from "drizzle-orm/relations";
import {
financialBalances,
incomes,
leaseDocuments,
leases,
maintenanceRequests,
messages,
obligations,
paymentMethods,
paymentTransactions,
properties,
propertyMedia,
reminders,
rentSchedules,
roles,
sessionConfigs,
tenantApplications,
tenantInvites,
userPins,
userRoles,
users,
userTokens,
webTokens,
} from "./schema.ts";
export const financialBalancesRelations = relations(
financialBalances,
({ one }) => ({
user: one(users, {
fields: [financialBalances.userId],
references: [users.id],
}),
}),
);
export const usersRelations = relations(users, ({ many }) => ({
financialBalances: many(financialBalances),
incomes: many(incomes),
maintenanceRequests: many(maintenanceRequests),
obligations: many(obligations),
paymentMethods: many(paymentMethods),
sessionConfigs: many(sessionConfigs),
userRoles: many(userRoles),
userTokens: many(userTokens),
userPins: many(userPins),
leases_tenantId: many(leases, {
relationName: "leases_tenantId_users_id",
}),
leases_ownerId: many(leases, {
relationName: "leases_ownerId_users_id",
}),
messages_senderId: many(messages, {
relationName: "messages_senderId_users_id",
}),
messages_recipientId: many(messages, {
relationName: "messages_recipientId_users_id",
}),
properties: many(properties),
tenantApplications: many(tenantApplications),
reminders: many(reminders),
tenantInvites: many(tenantInvites),
webTokens: many(webTokens),
}));
export const incomesRelations = relations(incomes, ({ one }) => ({
user: one(users, {
fields: [incomes.userId],
references: [users.id],
}),
}));
export const leaseDocumentsRelations = relations(leaseDocuments, ({ one }) => ({
lease: one(leases, {
fields: [leaseDocuments.leaseId],
references: [leases.id],
}),
}));
export const leasesRelations = relations(leases, ({ one, many }) => ({
leaseDocuments: many(leaseDocuments),
paymentTransactions: many(paymentTransactions),
property: one(properties, {
fields: [leases.propertyId],
references: [properties.id],
}),
user_tenantId: one(users, {
fields: [leases.tenantId],
references: [users.id],
relationName: "leases_tenantId_users_id",
}),
user_ownerId: one(users, {
fields: [leases.ownerId],
references: [users.id],
relationName: "leases_ownerId_users_id",
}),
rentSchedule: one(rentSchedules, {
fields: [leases.paymentScheduleId],
references: [rentSchedules.id],
}),
paymentMethod: one(paymentMethods, {
fields: [leases.defaultPaymentMethodId],
references: [paymentMethods.id],
}),
messages: many(messages),
reminders: many(reminders),
tenantInvites: many(tenantInvites),
}));
export const rentSchedulesRelations = relations(
rentSchedules,
({ one, many }) => ({
property: one(properties, {
fields: [rentSchedules.propertyId],
references: [properties.id],
}),
leases: many(leases),
}),
);
export const propertiesRelations = relations(properties, ({ one, many }) => ({
rentSchedules: many(rentSchedules),
maintenanceRequests: many(maintenanceRequests),
propertyMedias: many(propertyMedia),
leases: many(leases),
user: one(users, {
fields: [properties.ownerId],
references: [users.id],
}),
paymentMethod: one(paymentMethods, {
fields: [properties.defaultPaymentMethodId],
references: [paymentMethods.id],
}),
tenantApplications: many(tenantApplications),
tenantInvites: many(tenantInvites),
}));
export const maintenanceRequestsRelations = relations(
maintenanceRequests,
({ one }) => ({
property: one(properties, {
fields: [maintenanceRequests.propertyId],
references: [properties.id],
}),
user: one(users, {
fields: [maintenanceRequests.tenantId],
references: [users.id],
}),
}),
);
export const obligationsRelations = relations(obligations, ({ one }) => ({
user: one(users, {
fields: [obligations.userId],
references: [users.id],
}),
}));
export const paymentMethodsRelations = relations(
paymentMethods,
({ one, many }) => ({
user: one(users, {
fields: [paymentMethods.userId],
references: [users.id],
}),
leases: many(leases),
properties: many(properties),
}),
);
export const paymentTransactionsRelations = relations(
paymentTransactions,
({ one }) => ({
lease: one(leases, {
fields: [paymentTransactions.leaseId],
references: [leases.id],
}),
}),
);
export const propertyMediaRelations = relations(propertyMedia, ({ one }) => ({
property: one(properties, {
fields: [propertyMedia.propertyId],
references: [properties.id],
}),
}));
export const sessionConfigsRelations = relations(sessionConfigs, ({ one }) => ({
user: one(users, {
fields: [sessionConfigs.userId],
references: [users.id],
}),
}));
export const userRolesRelations = relations(userRoles, ({ one }) => ({
user: one(users, {
fields: [userRoles.userId],
references: [users.id],
}),
role: one(roles, {
fields: [userRoles.roleId],
references: [roles.id],
}),
}));
export const rolesRelations = relations(roles, ({ many }) => ({
userRoles: many(userRoles),
}));
export const userTokensRelations = relations(userTokens, ({ one }) => ({
user: one(users, {
fields: [userTokens.userId],
references: [users.id],
}),
}));
export const userPinsRelations = relations(userPins, ({ one }) => ({
user: one(users, {
fields: [userPins.userId],
references: [users.id],
}),
}));
export const messagesRelations = relations(messages, ({ one }) => ({
lease: one(leases, {
fields: [messages.leaseId],
references: [leases.id],
}),
user_senderId: one(users, {
fields: [messages.senderId],
references: [users.id],
relationName: "messages_senderId_users_id",
}),
user_recipientId: one(users, {
fields: [messages.recipientId],
references: [users.id],
relationName: "messages_recipientId_users_id",
}),
}));
export const tenantApplicationsRelations = relations(
tenantApplications,
({ one }) => ({
property: one(properties, {
fields: [tenantApplications.propertyId],
references: [properties.id],
}),
user: one(users, {
fields: [tenantApplications.applicantId],
references: [users.id],
}),
}),
);
export const remindersRelations = relations(reminders, ({ one }) => ({
user: one(users, {
fields: [reminders.userId],
references: [users.id],
}),
lease: one(leases, {
fields: [reminders.leaseId],
references: [leases.id],
}),
}));
export const tenantInvitesRelations = relations(tenantInvites, ({ one }) => ({
user: one(users, {
fields: [tenantInvites.landlordId],
references: [users.id],
}),
property: one(properties, {
fields: [tenantInvites.propertyId],
references: [properties.id],
}),
lease: one(leases, {
fields: [tenantInvites.leaseId],
references: [leases.id],
}),
}));
export const webTokensRelations = relations(webTokens, ({ one }) => ({
user: one(users, {
fields: [webTokens.userId],
references: [users.id],
}),
}));