add invoice unique constraints and rename tables

This commit is contained in:
Linus Miller 2026-01-13 09:49:03 +01:00
parent a9d43ac866
commit bcc02fbd78
8 changed files with 72 additions and 56 deletions

View File

@ -65,7 +65,7 @@ async function readdir(dir: string) {
} }
const file = await trx.insertInto('file').values({ filename }).returning('id').executeTakeFirstOrThrow() const file = await trx.insertInto('file').values({ filename }).returning('id').executeTakeFirstOrThrow()
await trx.insertInto('filesToInvoice').values({ fileId: file.id, invoiceId: invoice.id }).execute() await trx.insertInto('files_invoice').values({ fileId: file.id, invoiceId: invoice.id }).execute()
} }
await trx.commit().execute() await trx.commit().execute()

View File

@ -68,7 +68,7 @@ for (const row of rows.toReversed()) {
} }
const file = await trx.insertInto('file').values({ filename }).returning('id').executeTakeFirstOrThrow() const file = await trx.insertInto('file').values({ filename }).returning('id').executeTakeFirstOrThrow()
await trx.insertInto('filesToInvoice').values({ fileId: file.id, invoiceId: invoice.id }).execute() await trx.insertInto('files_invoice').values({ fileId: file.id, invoiceId: invoice.id }).execute()
} }
} }

View File

@ -2,7 +2,7 @@
-- PostgreSQL database dump -- PostgreSQL database dump
-- --
\restrict kNYhdwOhwE9I3bgAzdljyYgB5xyEpjhiaSCeYZfp84v3ey1GpvsdxX4U8Y8fQM3 \restrict wU1dfnHqRTt2y70XvbaA1LDda0PgjnckSPP98WqYNl91ofZctLJ9wjIOEE8bpwR
-- Dumped from database version 18.1 -- Dumped from database version 18.1
-- Dumped by pg_dump version 18.1 -- Dumped by pg_dump version 18.1
@ -71,10 +71,10 @@ ALTER SEQUENCE public.account_id_seq OWNED BY public.account.id;
-- --
-- Name: aliasesToSupplier; Type: TABLE; Schema: public; Owner: - -- Name: aliases_supplier; Type: TABLE; Schema: public; Owner: -
-- --
CREATE TABLE public."aliasesToSupplier" ( CREATE TABLE public.aliases_supplier (
id integer NOT NULL, id integer NOT NULL,
"supplierId" integer NOT NULL, "supplierId" integer NOT NULL,
alias text NOT NULL alias text NOT NULL
@ -82,10 +82,10 @@ CREATE TABLE public."aliasesToSupplier" (
-- --
-- Name: aliasesToSupplier_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- Name: aliases_supplier_id_seq; Type: SEQUENCE; Schema: public; Owner: -
-- --
CREATE SEQUENCE public."aliasesToSupplier_id_seq" CREATE SEQUENCE public.aliases_supplier_id_seq
AS integer AS integer
START WITH 1 START WITH 1
INCREMENT BY 1 INCREMENT BY 1
@ -95,10 +95,10 @@ CREATE SEQUENCE public."aliasesToSupplier_id_seq"
-- --
-- Name: aliasesToSupplier_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- Name: aliases_supplier_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
-- --
ALTER SEQUENCE public."aliasesToSupplier_id_seq" OWNED BY public."aliasesToSupplier".id; ALTER SEQUENCE public.aliases_supplier_id_seq OWNED BY public.aliases_supplier.id;
-- --
@ -199,10 +199,10 @@ ALTER SEQUENCE public.file_id_seq OWNED BY public.file.id;
-- --
-- Name: filesToInvoice; Type: TABLE; Schema: public; Owner: - -- Name: files_invoice; Type: TABLE; Schema: public; Owner: -
-- --
CREATE TABLE public."filesToInvoice" ( CREATE TABLE public.files_invoice (
"invoiceId" integer NOT NULL, "invoiceId" integer NOT NULL,
"fileId" integer NOT NULL "fileId" integer NOT NULL
); );
@ -442,10 +442,10 @@ ALTER SEQUENCE public.transaction_id_seq OWNED BY public.transaction.id;
-- --
-- Name: transactionsToObjects; Type: TABLE; Schema: public; Owner: - -- Name: transactions_objects; Type: TABLE; Schema: public; Owner: -
-- --
CREATE TABLE public."transactionsToObjects" ( CREATE TABLE public.transactions_objects (
"transactionId" integer NOT NULL, "transactionId" integer NOT NULL,
"objectId" integer NOT NULL "objectId" integer NOT NULL
); );
@ -459,10 +459,10 @@ ALTER TABLE ONLY public.account ALTER COLUMN id SET DEFAULT nextval('public.acco
-- --
-- Name: aliasesToSupplier id; Type: DEFAULT; Schema: public; Owner: - -- Name: aliases_supplier id; Type: DEFAULT; Schema: public; Owner: -
-- --
ALTER TABLE ONLY public."aliasesToSupplier" ALTER COLUMN id SET DEFAULT nextval('public."aliasesToSupplier_id_seq"'::regclass); ALTER TABLE ONLY public.aliases_supplier ALTER COLUMN id SET DEFAULT nextval('public.aliases_supplier_id_seq'::regclass);
-- --
@ -560,19 +560,19 @@ ALTER TABLE ONLY public.account
-- --
-- Name: aliasesToSupplier aliasesToSupplier_alias_key; Type: CONSTRAINT; Schema: public; Owner: - -- Name: aliases_supplier aliases_supplier_alias_key; Type: CONSTRAINT; Schema: public; Owner: -
-- --
ALTER TABLE ONLY public."aliasesToSupplier" ALTER TABLE ONLY public.aliases_supplier
ADD CONSTRAINT "aliasesToSupplier_alias_key" UNIQUE (alias); ADD CONSTRAINT aliases_supplier_alias_key UNIQUE (alias);
-- --
-- Name: aliasesToSupplier aliasesToSupplier_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- Name: aliases_supplier aliases_supplier_pkey; Type: CONSTRAINT; Schema: public; Owner: -
-- --
ALTER TABLE ONLY public."aliasesToSupplier" ALTER TABLE ONLY public.aliases_supplier
ADD CONSTRAINT "aliasesToSupplier_pkey" PRIMARY KEY (id); ADD CONSTRAINT aliases_supplier_pkey PRIMARY KEY (id);
-- --
@ -600,11 +600,11 @@ ALTER TABLE ONLY public.file
-- --
-- Name: filesToInvoice filesToInvoice_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- Name: files_invoice files_invoice_pkey; Type: CONSTRAINT; Schema: public; Owner: -
-- --
ALTER TABLE ONLY public."filesToInvoice" ALTER TABLE ONLY public.files_invoice
ADD CONSTRAINT "filesToInvoice_pkey" PRIMARY KEY ("invoiceId", "fileId"); ADD CONSTRAINT files_invoice_pkey PRIMARY KEY ("invoiceId", "fileId");
-- --
@ -631,6 +631,22 @@ ALTER TABLE ONLY public."financialYear"
ADD CONSTRAINT "financialYear_year_key" UNIQUE (year); ADD CONSTRAINT "financialYear_year_key" UNIQUE (year);
--
-- Name: invoice invoice_fiskenNumber_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.invoice
ADD CONSTRAINT "invoice_fiskenNumber_key" UNIQUE ("fiskenNumber");
--
-- Name: invoice invoice_phmNumber_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.invoice
ADD CONSTRAINT "invoice_phmNumber_key" UNIQUE ("phmNumber");
-- --
-- Name: invoice invoice_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- Name: invoice invoice_pkey; Type: CONSTRAINT; Schema: public; Owner: -
-- --
@ -696,35 +712,35 @@ ALTER TABLE ONLY public.transaction
-- --
-- Name: transactionsToObjects transactionsToObjects_transactionId_objectId_key; Type: CONSTRAINT; Schema: public; Owner: - -- Name: transactions_objects transactions_objects_transactionId_objectId_key; Type: CONSTRAINT; Schema: public; Owner: -
-- --
ALTER TABLE ONLY public."transactionsToObjects" ALTER TABLE ONLY public.transactions_objects
ADD CONSTRAINT "transactionsToObjects_transactionId_objectId_key" UNIQUE ("transactionId", "objectId"); ADD CONSTRAINT "transactions_objects_transactionId_objectId_key" UNIQUE ("transactionId", "objectId");
-- --
-- Name: aliasesToSupplier aliasesToSupplier_supplierId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- Name: aliases_supplier aliases_supplier_supplierId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
-- --
ALTER TABLE ONLY public."aliasesToSupplier" ALTER TABLE ONLY public.aliases_supplier
ADD CONSTRAINT "aliasesToSupplier_supplierId_fkey" FOREIGN KEY ("supplierId") REFERENCES public.supplier(id); ADD CONSTRAINT "aliases_supplier_supplierId_fkey" FOREIGN KEY ("supplierId") REFERENCES public.supplier(id);
-- --
-- Name: filesToInvoice filesToInvoice_fileId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- Name: files_invoice files_invoice_fileId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
-- --
ALTER TABLE ONLY public."filesToInvoice" ALTER TABLE ONLY public.files_invoice
ADD CONSTRAINT "filesToInvoice_fileId_fkey" FOREIGN KEY ("fileId") REFERENCES public.file(id); ADD CONSTRAINT "files_invoice_fileId_fkey" FOREIGN KEY ("fileId") REFERENCES public.file(id);
-- --
-- Name: filesToInvoice filesToInvoice_invoiceId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- Name: files_invoice files_invoice_invoiceId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
-- --
ALTER TABLE ONLY public."filesToInvoice" ALTER TABLE ONLY public.files_invoice
ADD CONSTRAINT "filesToInvoice_invoiceId_fkey" FOREIGN KEY ("invoiceId") REFERENCES public.invoice(id); ADD CONSTRAINT "files_invoice_invoiceId_fkey" FOREIGN KEY ("invoiceId") REFERENCES public.invoice(id);
-- --
@ -784,24 +800,24 @@ ALTER TABLE ONLY public.transaction
-- --
-- Name: transactionsToObjects transactionsToObjects_objectId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- Name: transactions_objects transactions_objects_objectId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
-- --
ALTER TABLE ONLY public."transactionsToObjects" ALTER TABLE ONLY public.transactions_objects
ADD CONSTRAINT "transactionsToObjects_objectId_fkey" FOREIGN KEY ("objectId") REFERENCES public.object(id); ADD CONSTRAINT "transactions_objects_objectId_fkey" FOREIGN KEY ("objectId") REFERENCES public.object(id);
-- --
-- Name: transactionsToObjects transactionsToObjects_transactionId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- Name: transactions_objects transactions_objects_transactionId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
-- --
ALTER TABLE ONLY public."transactionsToObjects" ALTER TABLE ONLY public.transactions_objects
ADD CONSTRAINT "transactionsToObjects_transactionId_fkey" FOREIGN KEY ("transactionId") REFERENCES public.transaction(id); ADD CONSTRAINT "transactions_objects_transactionId_fkey" FOREIGN KEY ("transactionId") REFERENCES public.transaction(id);
-- --
-- PostgreSQL database dump complete -- PostgreSQL database dump complete
-- --
\unrestrict kNYhdwOhwE9I3bgAzdljyYgB5xyEpjhiaSCeYZfp84v3ey1GpvsdxX4U8Y8fQM3 \unrestrict wU1dfnHqRTt2y70XvbaA1LDda0PgjnckSPP98WqYNl91ofZctLJ9wjIOEE8bpwR

View File

@ -20,11 +20,11 @@ auth_tables = [
accounting_tables = [ accounting_tables = [
'account', 'account',
'accountBalance', 'accountBalance',
'aliasesToSupplier', 'aliases_supplier',
'dimension', 'dimension',
'entry', 'entry',
'file', 'file',
'filesToInvoice', 'files_invoice',
'financialYear', 'financialYear',
'invoice', 'invoice',
'journal', 'journal',
@ -32,7 +32,7 @@ accounting_tables = [
'supplier', 'supplier',
'supplierType', 'supplierType',
'transaction', 'transaction',
'transactionsToObjects', 'transactions_objects',
] ]
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()

View File

@ -321,7 +321,7 @@ export default async function parseStream(stream: ReadableStream, decoder: Decod
} }
await trx await trx
.insertInto('transactionsToObjects') .insertInto('transactions_objects')
.values({ .values({
transactionId, transactionId,
objectId, objectId,

View File

@ -31,7 +31,7 @@ const invoiceRoutes: FastifyPluginCallbackZod = (fastify, _, done) => {
jsonArrayFrom( jsonArrayFrom(
eb eb
.selectFrom('file as f') .selectFrom('file as f')
.innerJoin('filesToInvoice as fi', 'f.id', 'fi.fileId') .innerJoin('files_invoice as fi', 'f.id', 'fi.fileId')
.select(['id', 'filename']) .select(['id', 'filename'])
.whereRef('fi.invoiceId', '=', 'i.id'), .whereRef('fi.invoiceId', '=', 'i.id'),
).as('files'), ).as('files'),
@ -89,7 +89,7 @@ const invoiceRoutes: FastifyPluginCallbackZod = (fastify, _, done) => {
jsonArrayFrom( jsonArrayFrom(
eb eb
.selectFrom('file as f') .selectFrom('file as f')
.innerJoin('filesToInvoice as fi', 'f.id', 'fi.fileId') .innerJoin('files_invoice as fi', 'f.id', 'fi.fileId')
.select(['id', 'filename']) .select(['id', 'filename'])
.whereRef('fi.invoiceId', '=', 'i.id'), .whereRef('fi.invoiceId', '=', 'i.id'),
).as('files'), ).as('files'),

View File

@ -28,7 +28,7 @@ const objectRoutes: FastifyPluginCallbackZod = (fastify, _, done) => {
async handler(request) { async handler(request) {
return db return db
.selectFrom('transaction as t') .selectFrom('transaction as t')
.innerJoin('transactionsToObjects as to', 't.id', 'to.transactionId') .innerJoin('transactions_objects as to', 't.id', 'to.transactionId')
.innerJoin('entry as e', 'e.id', 't.entryId') .innerJoin('entry as e', 'e.id', 't.entryId')
.select(['t.entryId', 'e.transactionDate', 't.accountNumber', 't.amount']) .select(['t.entryId', 'e.transactionDate', 't.accountNumber', 't.amount'])
.where('to.objectId', '=', request.params.id) .where('to.objectId', '=', request.params.id)

View File

@ -55,7 +55,7 @@ export interface AdmissionsRoles {
roleId: number roleId: number
} }
export interface AliasesToSupplier { export interface AliasesSupplier {
alias: string alias: string
id: Generated<number> id: Generated<number>
supplierId: number supplierId: number
@ -108,7 +108,7 @@ export interface File {
id: Generated<number> id: Generated<number>
} }
export interface FilesToInvoice { export interface FilesInvoice {
fileId: number fileId: number
invoiceId: number invoiceId: number
} }
@ -206,7 +206,7 @@ export interface Transaction {
transactionDate: Timestamp | null transactionDate: Timestamp | null
} }
export interface TransactionsToObjects { export interface TransactionsObjects {
objectId: number objectId: number
transactionId: number transactionId: number
} }
@ -237,13 +237,13 @@ export interface DB {
accountBalance: AccountBalance accountBalance: AccountBalance
admission: Admission admission: Admission
admissions_roles: AdmissionsRoles admissions_roles: AdmissionsRoles
aliasesToSupplier: AliasesToSupplier aliases_Supplier: AliasesSupplier
dimension: Dimension dimension: Dimension
emailToken: EmailToken emailToken: EmailToken
entry: Entry entry: Entry
error: Error error: Error
file: File file: File
filesToInvoice: FilesToInvoice files_invoice: FilesInvoice
financialYear: FinancialYear financialYear: FinancialYear
invite: Invite invite: Invite
invites_roles: InvitesRoles invites_roles: InvitesRoles
@ -255,7 +255,7 @@ export interface DB {
supplier: Supplier supplier: Supplier
supplierType: SupplierType supplierType: SupplierType
transaction: Transaction transaction: Transaction
transactionsToObjects: TransactionsToObjects transactions_objects: TransactionsObjects
user: User user: User
users_roles: UsersRoles users_roles: UsersRoles
} }