From 230ba670abaf7366a0ad9305aa5000af83b33623 Mon Sep 17 00:00:00 2001 From: Gabriel De Los Rios Date: Sat, 17 Jan 2026 15:01:49 -0300 Subject: [PATCH] feat(persistance): add migration --- src/migrations/20260117.ts | 56 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/migrations/20260117.ts diff --git a/src/migrations/20260117.ts b/src/migrations/20260117.ts new file mode 100644 index 0000000..5171cbc --- /dev/null +++ b/src/migrations/20260117.ts @@ -0,0 +1,56 @@ +const chainSql = + 'CREATE TABLE IF NOT EXISTS chain ( ' + + 'id INTEGER PRIMARY KEY AUTOINCREMENT, ' + + 'image TEXT, ' + + 'name TEXT ' + + ');'; + +const establishmentSql = + 'CREATE TABLE IF NOT EXISTS establishment ( ' + + 'id INTEGER PRIMARY KEY AUTOINCREMENT ,' + + 'address TEXT NOT NULL, ' + + 'chain_id INTEGER NOT NULL, ' + + 'FOREIGN KEY (chain_id) REFERENCES chain(id) ON DELETE CASCADE ' + + ');'; + +const establishmentChainIdxSql = + 'CREATE INDEX IF NOT EXISTS idx_establishment_chain_id ON establishment(chain_id);'; + +const productSql = + 'CREATE TABLE IF NOT EXISTS product ( ' + + 'id INTEGER PRIMARY KEY AUTOINCREMENT, ' + + 'barcode TEXT NOT NULL UNIQUE, ' + + 'name TEXT NOT NULL DEFAULT "", ' + + 'image TEXT ' + + ');'; + +const productEstablishmentSql = + 'CREATE TABLE IF NOT EXISTS product_establishment ( ' + + 'id INTEGER PRIMARY KEY AUTOINCREMENT, ' + + 'product_id INTEGER NOT NULL, ' + + 'establishment_id INTEGER NOT NULL, ' + + 'FOREIGN KEY (product_id) REFERENCES product(id) ON DELETE CASCADE, ' + + 'FOREIGN KEY (establishment_id) REFERENCES establishment(id) ON DELETE CASCADE, ' + + 'UNIQUE(product_id, establishment_id) ' + + ');'; + +const purchaseSql = + 'CREATE TABLE IF NOT EXISTS purchase ( ' + + 'id INTEGER PRIMARY KEY AUTOINCREMENT, ' + + 'establishment_id INTEGER NOT NULL, ' + + 'product_id INTEGER NOT NULL, ' + + 'price INTEGER NOT NULL DEFAULT 0, ' + + 'quantity INTEGER NOT NULL DEFAULT 1, ' + + 'date INTEGER NOT NULL, ' + + 'FOREIGN KEY (establishment_id) REFERENCES establishment(id) ON DELETE CASCADE, ' + + 'FOREIGN KEY (product_id) REFERENCES product(id) ON DELETE CASCADE ' + + ');'; + +export const tables: [string, any[]][] = [ + [chainSql, []], + [establishmentSql, []], + [establishmentChainIdxSql, []], + [productSql, []], + [productEstablishmentSql, []], + [purchaseSql, []], +];