mirror of
https://github.com/whekin/household-bot.git
synced 2026-03-31 12:04:02 +00:00
feat(purchase): add per-purchase participant splits
This commit is contained in:
16
packages/db/drizzle/0016_equal_susan_delgado.sql
Normal file
16
packages/db/drizzle/0016_equal_susan_delgado.sql
Normal file
@@ -0,0 +1,16 @@
|
||||
CREATE TABLE "purchase_message_participants" (
|
||||
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||
"purchase_message_id" uuid NOT NULL,
|
||||
"member_id" uuid NOT NULL,
|
||||
"included" integer DEFAULT 1 NOT NULL,
|
||||
"share_amount_minor" bigint,
|
||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
--> statement-breakpoint
|
||||
ALTER TABLE "purchase_messages" ADD COLUMN "participant_split_mode" text DEFAULT 'equal' NOT NULL;--> statement-breakpoint
|
||||
ALTER TABLE "purchase_message_participants" ADD CONSTRAINT "purchase_message_participants_purchase_message_id_purchase_messages_id_fk" FOREIGN KEY ("purchase_message_id") REFERENCES "public"."purchase_messages"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||
ALTER TABLE "purchase_message_participants" ADD CONSTRAINT "purchase_message_participants_member_id_members_id_fk" FOREIGN KEY ("member_id") REFERENCES "public"."members"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||
CREATE UNIQUE INDEX "purchase_message_participants_purchase_member_unique" ON "purchase_message_participants" USING btree ("purchase_message_id","member_id");--> statement-breakpoint
|
||||
CREATE INDEX "purchase_message_participants_purchase_idx" ON "purchase_message_participants" USING btree ("purchase_message_id");--> statement-breakpoint
|
||||
CREATE INDEX "purchase_message_participants_member_idx" ON "purchase_message_participants" USING btree ("member_id");
|
||||
3215
packages/db/drizzle/meta/0016_snapshot.json
Normal file
3215
packages/db/drizzle/meta/0016_snapshot.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -113,6 +113,13 @@
|
||||
"when": 1773223414625,
|
||||
"tag": "0015_white_owl",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"version": "7",
|
||||
"when": 1773225121790,
|
||||
"tag": "0016_equal_susan_delgado",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -422,6 +422,7 @@ export const purchaseMessages = pgTable(
|
||||
parsedAmountMinor: bigint('parsed_amount_minor', { mode: 'bigint' }),
|
||||
parsedCurrency: text('parsed_currency'),
|
||||
parsedItemDescription: text('parsed_item_description'),
|
||||
participantSplitMode: text('participant_split_mode').default('equal').notNull(),
|
||||
parserMode: text('parser_mode'),
|
||||
parserConfidence: integer('parser_confidence'),
|
||||
needsReview: integer('needs_review').default(1).notNull(),
|
||||
@@ -447,6 +448,31 @@ export const purchaseMessages = pgTable(
|
||||
})
|
||||
)
|
||||
|
||||
export const purchaseMessageParticipants = pgTable(
|
||||
'purchase_message_participants',
|
||||
{
|
||||
id: uuid('id').defaultRandom().primaryKey(),
|
||||
purchaseMessageId: uuid('purchase_message_id')
|
||||
.notNull()
|
||||
.references(() => purchaseMessages.id, { onDelete: 'cascade' }),
|
||||
memberId: uuid('member_id')
|
||||
.notNull()
|
||||
.references(() => members.id, { onDelete: 'cascade' }),
|
||||
included: integer('included').default(1).notNull(),
|
||||
shareAmountMinor: bigint('share_amount_minor', { mode: 'bigint' }),
|
||||
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
||||
updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull()
|
||||
},
|
||||
(table) => ({
|
||||
purchaseMemberUnique: uniqueIndex('purchase_message_participants_purchase_member_unique').on(
|
||||
table.purchaseMessageId,
|
||||
table.memberId
|
||||
),
|
||||
purchaseIdx: index('purchase_message_participants_purchase_idx').on(table.purchaseMessageId),
|
||||
memberIdx: index('purchase_message_participants_member_idx').on(table.memberId)
|
||||
})
|
||||
)
|
||||
|
||||
export const processedBotMessages = pgTable(
|
||||
'processed_bot_messages',
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user