Files
groceries-price-tracker/src/migrations/20260117.ts

57 lines
1.8 KiB
TypeScript

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, []],
];