This commit is contained in:
2025-03-31 00:22:21 +03:00
commit 38f2a05107
146 changed files with 66771 additions and 0 deletions

170
scripts/import.js Normal file
View File

@@ -0,0 +1,170 @@
const sqlite3 = require('sqlite3');
const crypto = require('crypto');
// Данные для записи
const data = [
{ "name": "Богданова Л.", "group": "1", "status": "lamb" },
{ "name": "Ботюк Л.", "group": "1", "status": "lamb" },
{ "name": "Ботюк М.", "group": "1", "status": "elder" },
{ "name": "Венгер С.", "group": "1", "status": "lamb" },
{ "name": "Гловюк С.", "group": "1", "status": "lamb" },
{ "name": "Гнатюк П.", "group": "1", "status": "lamb" },
{ "name": "Дуньковська Г.", "group": "1", "status": "lamb" },
{ "name": "Корінь О.", "group": "1", "status": "lamb" },
{ "name": "Медецька Л.", "group": "1", "status": "lamb" },
{ "name": "Меладзе А.", "group": "1", "status": "lamb" },
{ "name": "Меладзе М.", "group": "1", "status": "lamb" },
{ "name": "Нуждіна Н.", "group": "1", "status": "lamb" },
{ "name": "Сидорчук І.", "group": "1", "status": "lamb" },
{ "name": "Сидорчук О.", "group": "1", "status": "elder" },
{ "name": "Смірнов Б.", "group": "1", "status": "lamb" },
{ "name": "Смірнова В.", "group": "1", "status": "lamb" },
{ "name": "Смірнов Л.", "group": "1", "status": "lamb" },
{ "name": "Ткаченко Н.", "group": "1", "status": "lamb" },
{ "name": "Медецький Р.", "group": "1", "status": "lamb" },
{ "name": "Заболотний В.", "group": "1", "status": "lamb" },
{ "name": "Власюк Т.", "group": "2", "status": "lamb" },
{ "name": "Демків В.", "group": "2", "status": "lamb" },
{ "name": "Іващенко А.", "group": "2", "status": "lamb" },
{ "name": "Кіналь Г.", "group": "2", "status": "lamb" },
{ "name": "Кіналь М.", "group": "2", "status": "lamb" },
{ "name": "Кіналь Т.", "group": "2", "status": "lamb" },
{ "name": "Ковчук Д.", "group": "2", "status": "lamb" },
{ "name": "Кушнірук Н.", "group": "2", "status": "lamb" },
{ "name": "Муц М.", "group": "2", "status": "elder" },
{ "name": "Муц Н.", "group": "2", "status": "lamb" },
{ "name": "Муц О.", "group": "2", "status": "lamb" },
{ "name": "Подвірна О.", "group": "2", "status": "lamb" },
{ "name": "Позовиков М.", "group": "2", "status": "elder" },
{ "name": "Позовиков О.", "group": "2", "status": "lamb" },
{ "name": "Позовикова Е.", "group": "2", "status": "lamb" },
{ "name": "Позовикова Л.", "group": "2", "status": "lamb" },
{ "name": "Позовикова М.", "group": "2", "status": "lamb" },
{ "name": "Резніченко А.", "group": "2", "status": "lamb" },
{ "name": "Резніченко В.", "group": "2", "status": "lamb" },
{ "name": "Хоптій Л.", "group": "2", "status": "lamb" },
{ "name": "Авдєєва В.", "group": "3", "status": "lamb" },
{ "name": "Авдєєв П.", "group": "3", "status": "lamb" },
{ "name": "Гречило Л.", "group": "3", "status": "lamb" },
{ "name": "Гушатей З.", "group": "3", "status": "lamb" },
{ "name": "Дворянська Н.", "group": "3", "status": "lamb" },
{ "name": "Дворянський М.", "group": "3", "status": "lamb" },
{ "name": "Дворянська М.", "group": "3", "status": "lamb" },
{ "name": "Дуньковська Ол.", "group": "3", "status": "lamb" },
{ "name": "Дуньковський В.", "group": "3", "status": "elder" },
{ "name": "Дуньковська Л.", "group": "3", "status": "lamb" },
{ "name": "Кавюк Н.", "group": "3", "status": "lamb" },
{ "name": "Ковалюк Е.", "group": "3", "status": "lamb" },
{ "name": "Ковалюк С.", "group": "3", "status": "lamb" },
{ "name": "Липа А.", "group": "3", "status": "lamb" },
{ "name": "Липа Н.", "group": "3", "status": "lamb" },
{ "name": "Музика С.", "group": "3", "status": "elder" },
{ "name": "Музика Св.", "group": "3", "status": "lamb" },
{ "name": "Філь Н.", "group": "3", "status": "lamb" },
{ "name": "Червенко Л.", "group": "3", "status": "lamb" },
{ "name": "Майка М.", "group": "3", "status": "lamb" },
{ "name": "Петрович І.", "group": "3", "status": "lamb" },
{ "name": "Буняк Н.", "group": "4", "status": "lamb" },
{ "name": "Буярська А.", "group": "4", "status": "lamb" },
{ "name": "Буярська Н.", "group": "4", "status": "lamb" },
{ "name": "Буярський М.", "group": "4", "status": "elder" },
{ "name": "Грищук Т.", "group": "4", "status": "lamb" },
{ "name": "Карелін І.", "group": "4", "status": "lamb" },
{ "name": "Кареліна Ір.", "group": "4", "status": "lamb" },
{ "name": "Кареліна С.", "group": "4", "status": "lamb" },
{ "name": "Ковальчук Н.", "group": "4", "status": "lamb" },
{ "name": "Ковальчук Р.", "group": "4", "status": "lamb" },
{ "name": "Ковчук Р.", "group": "4", "status": "lamb" },
{ "name": "Резніченко Т.", "group": "4", "status": "lamb" },
{ "name": "Сергієнко О.", "group": "4", "status": "lamb" },
{ "name": "Сергієнко С.", "group": "4", "status": "lamb" },
{ "name": "Стойкевич М.", "group": "4", "status": "lamb" },
{ "name": "Чапайло Г.", "group": "4", "status": "lamb" },
{ "name": "Шептицька В.", "group": "4", "status": "lamb" },
{ "name": "Шептицький І.", "group": "4", "status": "lamb" },
{ "name": "Благов Я.", "group": "5", "status": "lamb" },
{ "name": "Благова П.", "group": "5", "status": "lamb" },
{ "name": "Богів Г.", "group": "5", "status": "lamb" },
{ "name": "Богів Т.", "group": "5", "status": "lamb" },
{ "name": "Галка А.", "group": "5", "status": "lamb" },
{ "name": "Домбрович О.", "group": "5", "status": "lamb" },
{ "name": "Кавюк А.", "group": "5", "status": "lamb" },
{ "name": "Кавюк В.", "group": "5", "status": "elder" },
{ "name": "Кузнєцова Н.", "group": "5", "status": "lamb" },
{ "name": "Луців І.", "group": "5", "status": "lamb" },
{ "name": "Луців О.", "group": "5", "status": "lamb" },
{ "name": "Сиротюк В.", "group": "5", "status": "lamb" },
{ "name": "Сиротюк О.", "group": "5", "status": "lamb" },
{ "name": "Солонинка С.", "group": "5", "status": "lamb" },
{ "name": "Ульянич І.", "group": "5", "status": "lamb" },
{ "name": "Ульянич О.", "group": "5", "status": "lamb" },
{ "name": "Шмигельська С.", "group": "5", "status": "lamb" },
{ "name": "Сидорчук Т.", "group": "5", "status": "lamb" },
{ "name": "Білоліпецький І.", "group": "6", "status": "lamb" },
{ "name": "Винниченко Г.", "group": "6", "status": "lamb" },
{ "name": "Воронцов Д.", "group": "6", "status": "lamb" },
{ "name": "Дуньковська О.", "group": "6", "status": "lamb" },
{ "name": "Загурська О.", "group": "6", "status": "lamb" },
{ "name": "Іваненко К.", "group": "6", "status": "lamb" },
{ "name": "Кравчук Н.", "group": "6", "status": "lamb" },
{ "name": "Кузюк В.", "group": "6", "status": "lamb" },
{ "name": "Кузюк С.", "group": "6", "status": "lamb" },
{ "name": "Маняхіна А.", "group": "6", "status": "lamb" },
{ "name": "Мельник Н.", "group": "6", "status": "lamb" },
{ "name": "Мінтенко М.", "group": "6", "status": "lamb" },
{ "name": "Мінтенко Н.", "group": "6", "status": "lamb" },
{ "name": "Наворинська Н.", "group": "6", "status": "lamb" },
{ "name": "Носевич І.", "group": "6", "status": "lamb" },
{ "name": "Носевич Т.", "group": "6", "status": "lamb" },
{ "name": "Страшок М.", "group": "6", "status": "elder" },
{ "name": "Страшок О.", "group": "6", "status": "lamb" },
{ "name": "Мельник О.", "group": "6", "status": "lamb" },
{ "name": "Бугайов Д.", "group": "7", "status": "lamb" },
{ "name": "Гергель Л.", "group": "7", "status": "lamb" },
{ "name": "Гергель О.", "group": "7", "status": "lamb" },
{ "name": "Горун А.", "group": "7", "status": "lamb" },
{ "name": "Ковчук Л.", "group": "7", "status": "lamb" },
{ "name": "Ковчук Н.", "group": "7", "status": "lamb" },
{ "name": "Михайлів С.", "group": "7", "status": "lamb" },
{ "name": "Музика І.", "group": "7", "status": "lamb" },
{ "name": "Музика О.", "group": "7", "status": "lamb" },
{ "name": "Наворинський Р.", "group": "7", "status": "lamb" },
{ "name": "Парила І.", "group": "7", "status": "lamb" },
{ "name": "Резніченко А.", "group": "7", "status": "elder" },
{ "name": "Резніченко В.", "group": "7", "status": "lamb" },
{ "name": "Семчишин Ф.", "group": "7", "status": "elder" },
{ "name": "Сувалко В.", "group": "7", "status": "elder" },
{ "name": "Сувалко Н.", "group": "7", "status": "lamb" },
{ "name": "Якубович Л.", "group": "7", "status": "lamb" }
];
// Подключение к базе данных (или создание, если не существует)
const db = new sqlite3.Database('../database.sqlite', (err) => {
if (err) {
console.error('Ошибка при подключении к БД:', err.message);
} else {
console.log('Подключение к SQLite успешно');
}
});
// Вставка данных
const insertData = () => {
const stmt = db.prepare("INSERT INTO sheep (name, group_id, appointment, hash) VALUES (?, ?, ?, ?)");
data.forEach(user => {
stmt.run(user.name, user.group, user.status, crypto.randomUUID());
});
stmt.finalize();
console.log('Данные успешно записаны');
};
// Запуск вставки данных после создания таблицы
insertData();
// Закрытие соединения с БД
db.close((err) => {
if (err) {
console.error('Ошибка при закрытии БД:', err.message);
} else {
console.log('Соединение с БД закрыто');
}
});

161
scripts/migrator.js Normal file
View File

@@ -0,0 +1,161 @@
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('database.sqlite');
const db_old = new sqlite3.Database('old_db.sqlite');
// Створення підїздів
// const sql_1 = `SELECT * FROM areas`;
// db_old.all(sql_1, [], (err, areas) => {
// if (err) {
// throw err;
// }
// for (let i = 0; i < areas.length; i++) {
// const area = areas[i];
// if(area.type == "house"){
// // console.log(JSON.parse(area.entrance));
// db.get('SELECT * FROM house WHERE title = ? AND number = ?', [area.address_title, area.address_number], (err, house) => {
// if (err) {
// console.error(err.message);
// } else {
// let entrances = JSON.parse(area.entrance);
// let entrance_numbers = JSON.parse(area.entrance_number);
// for (let q = 0; q < entrances.length; q++) {
// const entrance = entrances[q];
// const number = entrance_numbers[q];
// console.log(entrance, number);
// db.run(`INSERT INTO entrance(house_id, entrance_number, title, points, points_number) VALUES(?, ?, ?, ?, ?)`,
// [
// house.id,
// q,
// `Під'їзд ${q+1}`,
// JSON.stringify(entrance),
// JSON.stringify(number)
// ],
// function (err) {
// if (err) {
// console.error(err.message);
// } else {
// console.log("New user entrance added with id " + this.lastID);
// }
// }
// );
// }
// // console.log(JSON.parse(area.entrance));
// }
// })
// }
// }
// });
// Міграція історії з старої БД в нову
// const sql_1 = `SELECT * FROM history ORDER BY date_start`;
// db_old.all(sql_1, [], (err, historys) => {
// if (err) {
// throw err;
// }
// for (let i = 0; i < historys.length; i++) {
// const history = historys[i];
// db_old.get('SELECT * FROM territory WHERE number = ?', [history.territory_number], (err, territory) => {
// if (err) {
// console.error(err.message);
// } else {
// // console.log(territory);
// let areas_id = JSON.parse(territory.areas_id)
// for (let index = 0; index < areas_id.length; index++) {
// const element = areas_id[index];
// db_old.get('SELECT * FROM areas WHERE id = ?', [element[0]], (err, area) => {
// if (err) {
// console.error(err.message);
// } else {
// if (area.type == "house") {
// console.log(area.address_title, area.address_number);
// db.get('SELECT * FROM house WHERE title = ? AND number = ?', [area.address_title, area.address_number], (err, house) => {
// if (err) {
// console.error(err.message);
// } else {
// console.log(area.address_title, area.address_number);
// console.log(house.id, element[1]);
// db.get('SELECT * FROM entrance WHERE house_id = ? AND entrance_number = ?', [house.id, element[1]], (err, entrance) => {
// if (err) {
// console.error(err.message);
// } else {
// console.log(house.id, element[1]);
// console.log(entrance.id, house.title, house.number, entrance.title);
// db.run(`INSERT INTO entrance_history(entrance_id, name, date_start, date_end, group_number, working) VALUES(?, ?, ?, ?, ?, ?)`,
// [
// entrance.id,
// history.name,
// history.date_start,
// history.date_end,
// history.group_number,
// history.working,
// ],
// function (err) {
// if (err) {
// console.error(err.message);
// } else {
// console.log("New user history added with id " + this.lastID);
// }
// }
// );
// }
// })
// }
// })
// } else {
// db.get('SELECT * FROM homestead WHERE title = ? AND number = ?', [area.address_title, area.address_number], (err, homestead) => {
// if (err) {
// console.error(err.message);
// } else {
// // console.log(house.id, house.title, house.number);
// db.run(`INSERT INTO homestead_history(homestead_id, name, date_start, date_end, group_number, working) VALUES(?, ?, ?, ?, ?, ?)`,
// [
// homestead.id,
// history.name,
// history.date_start,
// history.date_end,
// history.group_number,
// history.working,
// ],
// function (err) {
// if (err) {
// console.error(err.message);
// } else {
// console.log("New user history added with id " + this.lastID);
// }
// }
// );
// }
// })
// }
// }
// })
// }
// }
// })
// }
// });

14
scripts/package.json Normal file
View File

@@ -0,0 +1,14 @@
{
"name": "import",
"version": "1.0.0",
"main": "import.js",
"scripts": {
"start": "node import.js"
},
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"sqlite3": "^5.1.7"
}
}

181
scripts/updateDB.py Normal file
View File

@@ -0,0 +1,181 @@
import sqlite3
def table_exists(cursor, table_name):
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name=?;", (table_name,))
return cursor.fetchone() is not None
def create_tables():
conn = sqlite3.connect("database.sqlite")
cursor = conn.cursor()
tables = {
"sheep": """
CREATE TABLE IF NOT EXISTS sheep (
id INTEGER PRIMARY KEY,
group_id INTEGER,
name TEXT,
icon TEXT,
hash TEXT,
appointment TEXT DEFAULT 'lamb',
mode INTEGER DEFAULT 0,
cu_access INTEGER DEFAULT 0,
mt_access INTEGER DEFAULT 0,
ct_access INTEGER DEFAULT 0,
ms_access INTEGER DEFAULT 0,
sm_access INTEGER DEFAULT 0,
FOREIGN KEY (group_id) REFERENCES groups(id)
);""",
"groups": """
CREATE TABLE IF NOT EXISTS groups (
id INTEGER PRIMARY KEY,
group_number INTEGER,
share_hash TEXT
);""",
"subscription": """
CREATE TABLE IF NOT EXISTS subscription (
id INTEGER PRIMARY KEY,
sheep_id INTEGER,
token TEXT,
FOREIGN KEY (sheep_id) REFERENCES sheep(id)
);""",
"house": """
CREATE TABLE IF NOT EXISTS house (
id INTEGER PRIMARY KEY,
group_id INTEGER,
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,
FOREIGN KEY (group_id) REFERENCES groups(id)
);""",
"entrance": """
CREATE TABLE IF NOT EXISTS entrance (
id INTEGER PRIMARY KEY,
house_id INTEGER,
entrance_number INTEGER,
title TEXT,
points TEXT DEFAULT '[]',
points_number TEXT DEFAULT '[]',
floors_quantity TEXT,
apartments_quantity TEXT,
description TEXT,
created_at TIMESTAMP,
updated_at TIMESTAMP,
FOREIGN KEY (house_id) REFERENCES house(id)
);""",
"entrance_history": """
CREATE TABLE IF NOT EXISTS entrance_history (
id INTEGER PRIMARY KEY,
entrance_id INTEGER,
name TEXT,
date_start TIMESTAMP,
date_end TIMESTAMP,
group_number INTEGER,
sheep_id TEXT,
working INTEGER DEFAULT 0,
FOREIGN KEY (entrance_id) REFERENCES entrance(id),
FOREIGN KEY (sheep_id) REFERENCES sheep(id)
);""",
"apartments": """
CREATE TABLE IF NOT EXISTS apartments (
id INTEGER PRIMARY KEY,
entrance_id INTEGER,
apartment_number INTEGER,
title TEXT,
floors_number INTEGER,
status INTEGER,
description TEXT,
sheep_id TEXT,
updated_at TIMESTAMP,
FOREIGN KEY (entrance_id) REFERENCES entrance(id),
FOREIGN KEY (sheep_id) REFERENCES sheep(id)
);""",
"apartments_history": """
CREATE TABLE IF NOT EXISTS apartments_history (
id INTEGER PRIMARY KEY,
apartments_id INTEGER,
status INTEGER,
description TEXT,
sheep_id TEXT,
created_at TIMESTAMP,
FOREIGN KEY (apartments_id) REFERENCES apartments(id)
);""",
"homestead": """
CREATE TABLE IF NOT EXISTS homestead (
id INTEGER PRIMARY KEY,
group_id INTEGER,
title TEXT,
number TEXT,
points TEXT DEFAULT '[]',
point_icons TEXT DEFAULT '[]',
geo TEXT DEFAULT '[]',
osm_id TEXT DEFAULT '[]',
settlement TEXT,
description TEXT,
created_at TIMESTAMP,
updated_at TIMESTAMP,
FOREIGN KEY (group_id) REFERENCES groups(id)
);""",
"homestead_history": """
CREATE TABLE IF NOT EXISTS homestead_history (
id INTEGER PRIMARY KEY,
homestead_id INTEGER,
name TEXT,
date_start TIMESTAMP,
date_end TIMESTAMP,
group_number INTEGER,
sheep_id TEXT,
working INTEGER DEFAULT 0,
FOREIGN KEY (homestead_id) REFERENCES homestead(id),
FOREIGN KEY (sheep_id) REFERENCES sheep(id)
);""",
"meetings_schedule": """
CREATE TABLE IF NOT EXISTS meetings_schedule (
id INTEGER PRIMARY KEY,
date TIMESTAMP,
type INTEGER,
name TEXT,
sheep_id TEXT,
title TEXT,
number TEXT,
FOREIGN KEY (sheep_id) REFERENCES sheep(id)
);""",
"stand_list": """
CREATE TABLE IF NOT EXISTS stand_list (
id INTEGER PRIMARY KEY,
title TEXT,
hour_start INTEGER DEFAULT 10,
hour_end INTEGER DEFAULT 16,
quantity_sheep INTEGER DEFAULT 2,
week_days TEXT DEFAULT '[0, 1, 2, 3, 4, 5, 6]'
);""",
"stand_schedule": """
CREATE TABLE IF NOT EXISTS stand_schedule (
id INTEGER PRIMARY KEY,
stand INTEGER,
date TIMESTAMP,
hour INTEGER,
sheep_id TEXT,
number_sheep TEXT,
updated_at TIMESTAMP,
FOREIGN KEY (sheep_id) REFERENCES sheep(id),
FOREIGN KEY (stand) REFERENCES stand_list(id)
);"""
}
for name, sql in tables.items():
if not table_exists(cursor, name):
cursor.execute(sql)
conn.commit()
conn.close()
if __name__ == "__main__":
create_tables()
print("Database setup complete.")