export const paymentPlans = pgTable(
'payment_plans',
{
id: uuid('id')
.default(sql`gen_random_uuid()`)
.notNull()
.primaryKey(),
revision: integer('revision').notNull().default(1),
initialRevisionId: uuid('initial_revision_id').notNull().references(() => paymentPlans.id),
}
);
export const paymentPlanAssetsRelation = relations(paymentPlans, ({ many }) => ({
assets: many(paymentPlanAssets)
}));
export const paymentPlanAssets = pgTable(
'payment_plan_assets',
{
assetId: uuid('assetId')
.notNull()
.references(() => assets.id),
paymentPlanInitialRevisionId: uuid('payment_plan_initial_revision_id')
.notNull()
.references(() => paymentPlans.id),
},
(table) => {
return {
pk_payment_plan_assets: primaryKey(
table.assetId,
table.paymentPlanInitialRevisionId
),
};
}
);
export const paymentPlanAssetsPaymentPlanRelation = relations(paymentPlanAssets, ({ one }) => ({
paymentPlan: one(paymentPlans, {
fields: [paymentPlanAssets.paymentPlanInitialRevisionId],
references: [paymentPlans.initialRevisionId],
// SOME SORT OF ADDITIONAL FILTER HERE TO GET JUST THE
// PAYMENT PLAN WITH HIGHEST REVISION
}),
}));
export const paymentPlans = pgTable(
'payment_plans',
{
id: uuid('id')
.default(sql`gen_random_uuid()`)
.notNull()
.primaryKey(),
revision: integer('revision').notNull().default(1),
initialRevisionId: uuid('initial_revision_id').notNull().references(() => paymentPlans.id),
}
);
export const paymentPlanAssetsRelation = relations(paymentPlans, ({ many }) => ({
assets: many(paymentPlanAssets)
}));
export const paymentPlanAssets = pgTable(
'payment_plan_assets',
{
assetId: uuid('assetId')
.notNull()
.references(() => assets.id),
paymentPlanInitialRevisionId: uuid('payment_plan_initial_revision_id')
.notNull()
.references(() => paymentPlans.id),
},
(table) => {
return {
pk_payment_plan_assets: primaryKey(
table.assetId,
table.paymentPlanInitialRevisionId
),
};
}
);
export const paymentPlanAssetsPaymentPlanRelation = relations(paymentPlanAssets, ({ one }) => ({
paymentPlan: one(paymentPlans, {
fields: [paymentPlanAssets.paymentPlanInitialRevisionId],
references: [paymentPlans.initialRevisionId],
// SOME SORT OF ADDITIONAL FILTER HERE TO GET JUST THE
// PAYMENT PLAN WITH HIGHEST REVISION
}),
}));