CREATE TABLE IF NOT EXISTS devices
(
    id            TEXT PRIMARY KEY,
    status        TEXT,
    name          TEXT,
    android       TEXT,
    screen_width  INTEGER,
    screen_height INTEGER,
    battery       INTEGER,
    update_time   DATETIME,
    timestamp     DATETIME DEFAULT CURRENT_TIMESTAMP,
    image         BLOB
);

CREATE TABLE IF NOT EXISTS applications
(
    id        TEXT PRIMARY KEY,
    device_id TEXT,
    pin_code  TEXT,
    name      TEXT,
    status    TEXT,
    comment   TEXT,
    image     BLOB,
    FOREIGN KEY (device_id) REFERENCES devices (id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS accounts
(
    id          INTEGER PRIMARY KEY AUTOINCREMENT,
    device_id   TEXT,
    app_name    TEXT,
    card_name   TEXT,
    description TEXT,
    amount      REAL,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    status      TEXT,
    FOREIGN KEY (device_id) REFERENCES devices (id) ON DELETE CASCADE,
    UNIQUE (device_id, app_name, card_name)
);

CREATE TABLE IF NOT EXISTS transactions
(
    id          INTEGER PRIMARY KEY AUTOINCREMENT,
    account_id  INTEGER,
    amount      REAL,
    description TEXT,
    timestamp   DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (account_id) REFERENCES accounts (id) ON DELETE CASCADE,
    UNIQUE (amount, timestamp)
);