CREATE TABLE IF NOT EXISTS usuarios (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  nombre_usuario TEXT NOT NULL UNIQUE,
  contrasena_hash TEXT NOT NULL,
  fecha_creacion TEXT NOT NULL DEFAULT (datetime('now'))
);

CREATE TABLE IF NOT EXISTS gastos (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  nombre TEXT NOT NULL,
  importe_compra REAL NOT NULL,
  cantidad_lote REAL NOT NULL,
  unidad_medida TEXT NOT NULL,
  coste_por_unidad REAL NOT NULL,
  descripcion TEXT,
  fecha_creacion TEXT NOT NULL DEFAULT (datetime('now')),
  fecha_actualizacion TEXT NOT NULL DEFAULT (datetime('now'))
);

CREATE TABLE IF NOT EXISTS articulos (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  titulo TEXT NOT NULL,
  descripcion TEXT,
  foto_url TEXT,
  importe REAL,
  coste_total REAL NOT NULL DEFAULT 0,
  fecha_creacion TEXT NOT NULL DEFAULT (datetime('now')),
  fecha_actualizacion TEXT NOT NULL DEFAULT (datetime('now'))
);

CREATE TABLE IF NOT EXISTS articulo_gastos (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  articulo_id INTEGER NOT NULL,
  gasto_id INTEGER,
  cantidad_usada REAL NOT NULL,
  unidad_usada TEXT NOT NULL,
  coste_linea REAL NOT NULL,
  es_manual INTEGER NOT NULL DEFAULT 0,
  notas TEXT,
  FOREIGN KEY (articulo_id) REFERENCES articulos(id) ON DELETE CASCADE,
  FOREIGN KEY (gasto_id) REFERENCES gastos(id) ON DELETE RESTRICT
);

CREATE INDEX IF NOT EXISTS idx_articulo_gastos_articulo ON articulo_gastos(articulo_id);
CREATE INDEX IF NOT EXISTS idx_articulo_gastos_gasto ON articulo_gastos(gasto_id);
