Додане повідомлення про оновлення застосунку Оновлен Service Worker Перероблен WebSocket APІ
231 lines
6.0 KiB
JavaScript
231 lines
6.0 KiB
JavaScript
const sqlite3 = require("sqlite3").verbose();
|
|
const path = require('path');
|
|
|
|
const dbPath = process.env.DATABASE_PATH || '../';
|
|
const db = new sqlite3.Database(path.join(dbPath, 'database.sqlite'));
|
|
|
|
db.serialize(() => {
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS sheeps (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
group_id INTEGER,
|
|
name TEXT,
|
|
icon TEXT,
|
|
uuid TEXT,
|
|
uuid_manager TEXT,
|
|
appointment TEXT DEFAULT 'lamb',
|
|
mode INTEGER DEFAULT 0,
|
|
mode_title TEXT DEFAULT 'Користувач',
|
|
FOREIGN KEY (group_id) REFERENCES groups(group_number)
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS possibilities (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
sheep_id INTEGER,
|
|
can_add_sheeps INTEGER DEFAULT 0,
|
|
can_view_sheeps INTEGER DEFAULT 0,
|
|
can_add_territory INTEGER DEFAULT 0,
|
|
can_view_territory INTEGER DEFAULT 0,
|
|
can_manager_territory INTEGER DEFAULT 0,
|
|
can_add_stand INTEGER DEFAULT 0,
|
|
can_view_stand INTEGER DEFAULT 0,
|
|
can_manager_stand INTEGER DEFAULT 0,
|
|
can_add_schedule INTEGER DEFAULT 0,
|
|
can_view_schedule INTEGER DEFAULT 0,
|
|
FOREIGN KEY (sheep_id) REFERENCES sheeps(id)
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS groups (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
group_number INTEGER UNIQUE,
|
|
share_hash TEXT
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS subscription (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
sheep_id INTEGER,
|
|
endpoint TEXT,
|
|
keys TEXT,
|
|
device_name TEXT,
|
|
device_model TEXT,
|
|
created_at TIMESTAMP,
|
|
FOREIGN KEY (sheep_id) REFERENCES sheeps(id)
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS badges (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
sheep_id INTEGER,
|
|
quantity INTEGER,
|
|
FOREIGN KEY (sheep_id) REFERENCES sheeps(id)
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS house (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
title TEXT,
|
|
number TEXT,
|
|
points TEXT DEFAULT '[]',
|
|
points_number TEXT DEFAULT '[]',
|
|
geo TEXT DEFAULT '[]',
|
|
osm_id TEXT DEFAULT '[]',
|
|
settlement TEXT,
|
|
description TEXT,
|
|
created_at TIMESTAMP,
|
|
updated_at TIMESTAMP
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS entrance (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
house_id INTEGER,
|
|
entrance_number INTEGER,
|
|
title TEXT,
|
|
description TEXT,
|
|
created_at TIMESTAMP,
|
|
updated_at TIMESTAMP,
|
|
FOREIGN KEY (house_id) REFERENCES house(id)
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS entrance_history (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
entrance_id INTEGER,
|
|
name TEXT,
|
|
date_start TIMESTAMP,
|
|
date_end TIMESTAMP,
|
|
group_id INTEGER,
|
|
sheep_id INTEGER,
|
|
working INTEGER DEFAULT 0,
|
|
FOREIGN KEY (entrance_id) REFERENCES entrance(id),
|
|
FOREIGN KEY (sheep_id) REFERENCES sheeps(id),
|
|
FOREIGN KEY (group_id) REFERENCES groups(group_number)
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS apartments (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
entrance_id INTEGER,
|
|
apartment_number INTEGER,
|
|
title TEXT,
|
|
floors_number INTEGER,
|
|
status INTEGER,
|
|
description TEXT,
|
|
sheep_id INTEGER,
|
|
updated_at TIMESTAMP,
|
|
FOREIGN KEY (entrance_id) REFERENCES entrance(id),
|
|
FOREIGN KEY (sheep_id) REFERENCES sheeps(id)
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS apartments_history (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
sheep_id INTEGER,
|
|
apartments_id INTEGER,
|
|
status INTEGER,
|
|
description TEXT,
|
|
created_at TIMESTAMP,
|
|
FOREIGN KEY (sheep_id) REFERENCES sheeps(id),
|
|
FOREIGN KEY (apartments_id) REFERENCES apartments(id)
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS homestead (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
title TEXT,
|
|
number TEXT,
|
|
points TEXT DEFAULT '[]',
|
|
geo TEXT DEFAULT '[]',
|
|
zoom INTEGER DEFAULT 18,
|
|
osm_id TEXT DEFAULT '[]',
|
|
settlement TEXT,
|
|
description TEXT,
|
|
created_at TIMESTAMP,
|
|
updated_at TIMESTAMP
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS homestead_history (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
homestead_id INTEGER,
|
|
name TEXT,
|
|
date_start TIMESTAMP,
|
|
date_end TIMESTAMP,
|
|
group_id INTEGER,
|
|
sheep_id INTEGER,
|
|
working INTEGER DEFAULT 0,
|
|
FOREIGN KEY (homestead_id) REFERENCES homestead(id),
|
|
FOREIGN KEY (sheep_id) REFERENCES sheeps(id),
|
|
FOREIGN KEY (group_id) REFERENCES groups(group_number)
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS meetings_schedule (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
date TIMESTAMP,
|
|
type INTEGER,
|
|
name TEXT,
|
|
sheep_id INTEGER,
|
|
title TEXT,
|
|
number TEXT,
|
|
FOREIGN KEY (sheep_id) REFERENCES sheeps(id)
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS stand_list (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
title TEXT,
|
|
geo TEXT DEFAULT '[]',
|
|
hour_start INTEGER DEFAULT 9,
|
|
hour_end INTEGER DEFAULT 18,
|
|
quantity_sheep INTEGER DEFAULT 2,
|
|
week_days TEXT DEFAULT '[0, 1, 2, 3, 4, 5, 6]',
|
|
processing_time REAL DEFAULT 1,
|
|
status INTEGER DEFAULT 0,
|
|
updated_at TIMESTAMP
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS stand_schedule (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
stand_id INTEGER,
|
|
date TIMESTAMP,
|
|
hour INTEGER,
|
|
sheep_id INTEGER,
|
|
number_sheep TEXT,
|
|
updated_at TIMESTAMP,
|
|
FOREIGN KEY (stand_id) REFERENCES stand_list(id),
|
|
FOREIGN KEY (sheep_id) REFERENCES sheeps(id)
|
|
)
|
|
`);
|
|
|
|
db.run(`
|
|
CREATE TABLE IF NOT EXISTS stand_schedule_history (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
stand_schedule_id INTEGER,
|
|
sheep_id INTEGER,
|
|
created_at TIMESTAMP,
|
|
FOREIGN KEY (stand_schedule_id) REFERENCES stand_schedule(id),
|
|
FOREIGN KEY (sheep_id) REFERENCES sheeps(id)
|
|
)
|
|
`);
|
|
});
|
|
|
|
module.exports = db; |