287 lines
7.0 KiB
TypeScript
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],
|
|
}),
|
|
}));
|