integratedhub/drizzle/relations.ts
2026-01-20 09:02:26 -06:00

228 lines
5.6 KiB
TypeScript

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],
}),
}));