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