Repository navigation
Expand file tree
/
Copy pathsql_queries.json
More file actions
77 lines (65 loc) · 17 KB
/
Copy pathsql_queries.json
File metadata and controls
77 lines (65 loc) · 17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
{
"mysql": {
"auth_get_user_by_login": "SELECT u.id, u.full_name, u.email, u.phone, u.role_id, u.employee_number, u.login, u.password_hash, u.hired_date, u.active, r.name AS role_name, COALESCE(r.permissions, '111') AS permissions FROM users u LEFT JOIN roles r ON r.id = u.role_id WHERE u.login = %s LIMIT 1",
"auth_get_user_by_id": "SELECT u.id, u.full_name, u.email, u.phone, u.role_id, u.employee_number, u.login, u.password_hash, u.hired_date, u.active, r.name AS role_name, COALESCE(r.permissions, '111') AS permissions FROM users u LEFT JOIN roles r ON r.id = u.role_id WHERE u.id = %s LIMIT 1",
"dashboard_equipment_count": "SELECT COUNT(*) AS count_value FROM equipment_items ei WHERE NOT EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id)",
"dashboard_movements_count": "SELECT COUNT(*) AS count_value FROM item_movements",
"roles_list": "SELECT id, name, permissions, description FROM roles ORDER BY name",
"roles_get": "SELECT id, name, permissions, description FROM roles WHERE id = %s LIMIT 1",
"roles_create": "INSERT INTO roles (name, permissions, description) VALUES (%s, %s, %s)",
"roles_update": "UPDATE roles SET name = %s, permissions = %s, description = %s WHERE id = %s",
"roles_name_exists": "SELECT id FROM roles WHERE name = %s LIMIT 1",
"roles_name_exists_for_other": "SELECT id FROM roles WHERE name = %s AND id <> %s LIMIT 1",
"users_list": "SELECT u.id, u.full_name, u.email, u.phone, u.employee_number, u.login, u.hired_date, u.active, r.name AS role_name, r.permissions FROM users u LEFT JOIN roles r ON r.id = u.role_id ORDER BY u.full_name",
"users_get": "SELECT u.id, u.full_name, u.email, u.phone, u.role_id, u.employee_number, u.login, u.password_hash, u.hired_date, u.active, r.name AS role_name, COALESCE(r.permissions, '111') AS permissions FROM users u LEFT JOIN roles r ON r.id = u.role_id WHERE u.id = %s LIMIT 1",
"users_create": "INSERT INTO users (full_name, email, phone, role_id, employee_number, login, password_hash, hired_date, active) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
"users_update": "UPDATE users SET full_name = %s, email = %s, phone = %s, role_id = %s, employee_number = %s, login = %s, hired_date = %s, active = %s WHERE id = %s",
"users_update_with_password": "UPDATE users SET full_name = %s, email = %s, phone = %s, role_id = %s, employee_number = %s, login = %s, password_hash = %s, hired_date = %s, active = %s WHERE id = %s",
"users_deactivate": "UPDATE users SET active = 0 WHERE id = %s",
"users_login_exists": "SELECT id FROM users WHERE login = %s LIMIT 1",
"users_login_exists_for_other": "SELECT id FROM users WHERE login = %s AND id <> %s LIMIT 1",
"users_count_active_admins": "SELECT COUNT(*) AS count_value FROM users u JOIN roles r ON r.id = u.role_id WHERE u.active = 1 AND r.permissions = '333'",
"users_count_active_by_role": "SELECT COUNT(*) AS count_value FROM users WHERE active = 1 AND role_id = %s",
"categories_list": "SELECT id, name, description FROM categories ORDER BY name",
"categories_get": "SELECT id, name, description FROM categories WHERE id = %s LIMIT 1",
"categories_create": "INSERT INTO categories (name, description) VALUES (%s, %s)",
"categories_update": "UPDATE categories SET name = %s, description = %s WHERE id = %s",
"statuses_list": "SELECT id, name, description FROM statuses ORDER BY name",
"statuses_get": "SELECT id, name, description FROM statuses WHERE id = %s LIMIT 1",
"statuses_create": "INSERT INTO statuses (name, description) VALUES (%s, %s)",
"statuses_update": "UPDATE statuses SET name = %s, description = %s WHERE id = %s",
"locations_list": "SELECT id, building, floor, room, description, CONCAT_WS(' / ', NULLIF(building, ''), NULLIF(floor, ''), room) AS location_name FROM locations ORDER BY building, floor, room",
"locations_get": "SELECT id, building, floor, room, description, CONCAT_WS(' / ', NULLIF(building, ''), NULLIF(floor, ''), room) AS location_name FROM locations WHERE id = %s LIMIT 1",
"locations_create": "INSERT INTO locations (building, floor, room, description) VALUES (%s, %s, %s, %s)",
"locations_update": "UPDATE locations SET building = %s, floor = %s, room = %s, description = %s WHERE id = %s",
"suppliers_list": "SELECT id, name, contact, address, phone, email FROM suppliers ORDER BY name",
"suppliers_get": "SELECT id, name, contact, address, phone, email FROM suppliers WHERE id = %s LIMIT 1",
"suppliers_create": "INSERT INTO suppliers (name, contact, address, phone, email) VALUES (%s, %s, %s, %s, %s)",
"suppliers_update": "UPDATE suppliers SET name = %s, contact = %s, address = %s, phone = %s, email = %s WHERE id = %s",
"models_list": "SELECT m.id, m.manufacturer, m.model_name, m.category_id, m.spec, m.warranty_months, c.name AS category_name FROM equipment_models m JOIN categories c ON c.id = m.category_id ORDER BY m.manufacturer, m.model_name",
"models_get": "SELECT m.id, m.manufacturer, m.model_name, m.category_id, m.spec, m.warranty_months, c.name AS category_name FROM equipment_models m JOIN categories c ON c.id = m.category_id WHERE m.id = %s LIMIT 1",
"models_create": "INSERT INTO equipment_models (manufacturer, model_name, category_id, spec, warranty_months) VALUES (%s, %s, %s, %s, %s)",
"models_update": "UPDATE equipment_models SET manufacturer = %s, model_name = %s, category_id = %s, spec = %s, warranty_months = %s WHERE id = %s",
"purchases_list": "SELECT p.id, p.supplier_id, p.order_number, p.invoice_number, p.purchase_date, p.total_cost, p.notes, s.name AS supplier_name, CONCAT(COALESCE(p.order_number, 'Заказ без номера'), ' от ', DATE_FORMAT(p.purchase_date, '%Y-%m-%d')) AS purchase_name FROM purchases p LEFT JOIN suppliers s ON s.id = p.supplier_id ORDER BY p.purchase_date DESC, p.id DESC",
"purchases_get": "SELECT id, supplier_id, order_number, invoice_number, purchase_date, total_cost, notes FROM purchases WHERE id = %s LIMIT 1",
"equipment_list": "SELECT ei.id, ei.inventory_number, ei.serial_number, ei.model_id, ei.location_id, ei.purchase_id, ei.status_id, ei.purchase_date, ei.warranty_until, ei.price, ei.created_at, ei.updated_at, ei.created_by, ei.updated_by, ei.id_before_update, em.manufacturer, em.model_name, c.name AS category_name, s.name AS status_name, CONCAT_WS(' / ', NULLIF(l.building, ''), NULLIF(l.floor, ''), l.room) AS location_name FROM equipment_items ei JOIN equipment_models em ON em.id = ei.model_id JOIN categories c ON c.id = em.category_id JOIN statuses s ON s.id = ei.status_id LEFT JOIN locations l ON l.id = ei.location_id WHERE NOT EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id) AND (%s IS NULL OR ei.inventory_number LIKE CONCAT('%%', %s, '%%')) AND (%s IS NULL OR em.model_name LIKE CONCAT('%%', %s, '%%') OR em.manufacturer LIKE CONCAT('%%', %s, '%%')) AND (%s IS NULL OR c.id = %s) AND (%s IS NULL OR s.id = %s) AND (%s IS NULL OR CONCAT_WS(' ', l.building, l.floor, l.room) LIKE CONCAT('%%', %s, '%%') OR l.room LIKE CONCAT('%%', %s, '%%')) ORDER BY ei.id DESC LIMIT %s OFFSET %s",
"equipment_select_list": "SELECT ei.id, ei.inventory_number, ei.serial_number, ei.location_id, em.manufacturer, em.model_name, CONCAT(ei.inventory_number, ' - ', COALESCE(em.manufacturer, ''), ' ', em.model_name) AS item_name FROM equipment_items ei JOIN equipment_models em ON em.id = ei.model_id WHERE NOT EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id) ORDER BY ei.inventory_number",
"equipment_get": "SELECT ei.id, ei.inventory_number, ei.serial_number, ei.model_id, ei.location_id, ei.purchase_id, ei.status_id, ei.purchase_date, ei.warranty_until, ei.price, ei.created_at, ei.updated_at, ei.created_by, ei.updated_by, ei.id_before_update, em.manufacturer, em.model_name, em.spec, em.warranty_months, c.name AS category_name, s.name AS status_name, CONCAT_WS(' / ', NULLIF(l.building, ''), NULLIF(l.floor, ''), l.room) AS location_name, p.order_number, p.invoice_number, sup.name AS supplier_name, creator.full_name AS created_by_name, updater.full_name AS updated_by_name, prev.inventory_number AS previous_inventory_number, CASE WHEN EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id) THEN 0 ELSE 1 END AS is_actual FROM equipment_items ei JOIN equipment_models em ON em.id = ei.model_id JOIN categories c ON c.id = em.category_id JOIN statuses s ON s.id = ei.status_id LEFT JOIN locations l ON l.id = ei.location_id LEFT JOIN purchases p ON p.id = ei.purchase_id LEFT JOIN suppliers sup ON sup.id = p.supplier_id LEFT JOIN users creator ON creator.id = ei.created_by LEFT JOIN users updater ON updater.id = ei.updated_by LEFT JOIN equipment_items prev ON prev.id = ei.id_before_update WHERE ei.id = %s LIMIT 1",
"equipment_create": "INSERT INTO equipment_items (inventory_number, serial_number, model_id, location_id, purchase_id, status_id, purchase_date, warranty_until, price, created_by, updated_by, id_before_update) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NULL, NULL)",
"equipment_create_version": "INSERT INTO equipment_items (inventory_number, serial_number, model_id, location_id, purchase_id, status_id, purchase_date, warranty_until, price, created_at, updated_at, created_by, updated_by, id_before_update) SELECT %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW(), created_by, %s, id FROM equipment_items WHERE id = %s",
"equipment_create_location_version": "INSERT INTO equipment_items (inventory_number, serial_number, model_id, location_id, purchase_id, status_id, purchase_date, warranty_until, price, created_at, updated_at, created_by, updated_by, id_before_update) SELECT inventory_number, serial_number, model_id, %s, purchase_id, status_id, purchase_date, warranty_until, price, NOW(), NOW(), created_by, %s, id FROM equipment_items WHERE id = %s",
"equipment_inventory_exists": "SELECT id FROM equipment_items ei WHERE ei.inventory_number = %s AND NOT EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id) LIMIT 1",
"equipment_inventory_exists_for_other": "SELECT id FROM equipment_items ei WHERE ei.inventory_number = %s AND ei.id <> %s AND NOT EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id) LIMIT 1",
"equipment_has_child": "SELECT id FROM equipment_items WHERE id_before_update = %s LIMIT 1",
"equipment_actual_by_id": "SELECT ei.id FROM equipment_items ei WHERE ei.id = %s AND NOT EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id) LIMIT 1",
"movements_list": "SELECT im.id, im.item_id, im.movement_type, im.from_location_id, im.to_location_id, im.performed_by, im.performed_at, im.note, ei.inventory_number, em.manufacturer, em.model_name, CASE WHEN EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id) THEN 1 ELSE 0 END AS item_is_archive, CONCAT_WS(' / ', NULLIF(l_from.building, ''), NULLIF(l_from.floor, ''), l_from.room) AS from_location_name, CONCAT_WS(' / ', NULLIF(l_to.building, ''), NULLIF(l_to.floor, ''), l_to.room) AS to_location_name, u.full_name AS performed_by_name FROM item_movements im JOIN equipment_items ei ON ei.id = im.item_id JOIN equipment_models em ON em.id = ei.model_id LEFT JOIN locations l_from ON l_from.id = im.from_location_id LEFT JOIN locations l_to ON l_to.id = im.to_location_id LEFT JOIN users u ON u.id = im.performed_by ORDER BY im.performed_at DESC, im.id DESC LIMIT %s OFFSET %s",
"movements_create": "INSERT INTO item_movements (item_id, movement_type, from_location_id, to_location_id, performed_by, performed_at, note) VALUES (%s, %s, %s, %s, %s, NOW(), %s)",
"reports_equipment_items": "SELECT ei.id, ei.inventory_number, ei.serial_number, ei.price, ei.purchase_date, em.manufacturer, em.model_name, c.id AS category_id, c.name AS category_name, s.id AS status_id, s.name AS status_name, l.id AS location_id, CONCAT_WS(' / ', NULLIF(l.building, ''), NULLIF(l.floor, ''), l.room) AS location_name FROM equipment_items ei JOIN equipment_models em ON em.id = ei.model_id JOIN categories c ON c.id = em.category_id JOIN statuses s ON s.id = ei.status_id LEFT JOIN locations l ON l.id = ei.location_id WHERE NOT EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id) AND (%s IS NULL OR c.id = %s) AND (%s IS NULL OR s.id = %s) AND (%s IS NULL OR l.id = %s) ORDER BY c.name, em.manufacturer, em.model_name, ei.inventory_number",
"reports_by_status": "SELECT s.id, s.name, COUNT(ei.id) AS count_value FROM statuses s LEFT JOIN equipment_items ei ON ei.status_id = s.id AND NOT EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id) GROUP BY s.id, s.name ORDER BY s.name",
"reports_by_category": "SELECT c.id, c.name, COUNT(ei.id) AS count_value FROM categories c LEFT JOIN equipment_models em ON em.category_id = c.id LEFT JOIN equipment_items ei ON ei.model_id = em.id AND NOT EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id) GROUP BY c.id, c.name ORDER BY c.name",
"reports_by_location": "SELECT l.id, CONCAT_WS(' / ', NULLIF(l.building, ''), NULLIF(l.floor, ''), l.room) AS name, COUNT(ei.id) AS count_value FROM locations l LEFT JOIN equipment_items ei ON ei.location_id = l.id AND NOT EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id) GROUP BY l.id, l.building, l.floor, l.room ORDER BY l.building, l.floor, l.room",
"reports_movements_period": "SELECT im.id, im.movement_type, im.performed_at, im.note, ei.inventory_number, em.manufacturer, em.model_name, CASE WHEN EXISTS (SELECT 1 FROM equipment_items newer WHERE newer.id_before_update = ei.id) THEN 1 ELSE 0 END AS item_is_archive, CONCAT_WS(' / ', NULLIF(l_from.building, ''), NULLIF(l_from.floor, ''), l_from.room) AS from_location_name, CONCAT_WS(' / ', NULLIF(l_to.building, ''), NULLIF(l_to.floor, ''), l_to.room) AS to_location_name, u.full_name AS performed_by_name FROM item_movements im JOIN equipment_items ei ON ei.id = im.item_id JOIN equipment_models em ON em.id = ei.model_id LEFT JOIN locations l_from ON l_from.id = im.from_location_id LEFT JOIN locations l_to ON l_to.id = im.to_location_id LEFT JOIN users u ON u.id = im.performed_by WHERE (%s IS NULL OR DATE(im.performed_at) >= %s) AND (%s IS NULL OR DATE(im.performed_at) <= %s) ORDER BY im.performed_at DESC, im.id DESC",
"reports_equipment_changes_period": "SELECT ei.id, ei.inventory_number, ei.serial_number, ei.model_id, ei.location_id, ei.purchase_id, ei.status_id, ei.purchase_date, ei.warranty_until, ei.price, ei.created_at, ei.created_by, ei.updated_by, ei.id_before_update, em.manufacturer, em.model_name, c.name AS category_name, s.name AS status_name, CONCAT_WS(' / ', NULLIF(l.building, ''), NULLIF(l.floor, ''), l.room) AS location_name, prev.inventory_number AS prev_inventory_number, prev.serial_number AS prev_serial_number, prev.model_id AS prev_model_id, prev.location_id AS prev_location_id, prev.purchase_id AS prev_purchase_id, prev.status_id AS prev_status_id, prev.purchase_date AS prev_purchase_date, prev.warranty_until AS prev_warranty_until, prev.price AS prev_price, prev_em.manufacturer AS prev_manufacturer, prev_em.model_name AS prev_model_name, prev_c.name AS prev_category_name, prev_s.name AS prev_status_name, CONCAT_WS(' / ', NULLIF(prev_l.building, ''), NULLIF(prev_l.floor, ''), prev_l.room) AS prev_location_name FROM equipment_items ei JOIN equipment_items prev ON prev.id = ei.id_before_update JOIN equipment_models em ON em.id = ei.model_id JOIN categories c ON c.id = em.category_id JOIN statuses s ON s.id = ei.status_id LEFT JOIN locations l ON l.id = ei.location_id JOIN equipment_models prev_em ON prev_em.id = prev.model_id JOIN categories prev_c ON prev_c.id = prev_em.category_id JOIN statuses prev_s ON prev_s.id = prev.status_id LEFT JOIN locations prev_l ON prev_l.id = prev.location_id WHERE ei.id_before_update IS NOT NULL AND (%s IS NULL OR DATE(ei.created_at) >= %s) AND (%s IS NULL OR DATE(ei.created_at) <= %s) ORDER BY ei.created_at DESC, ei.id DESC",
"equipment_version_step": "SELECT ei.id, ei.inventory_number, ei.serial_number, ei.model_id, ei.location_id, ei.purchase_id, ei.status_id, ei.purchase_date, ei.warranty_until, ei.price, ei.created_at, ei.updated_at, ei.created_by, ei.updated_by, ei.id_before_update, em.manufacturer, em.model_name, c.id AS category_id, c.name AS category_name, s.id AS status_ref_id, s.name AS status_name, l.id AS location_ref_id, NULLIF(CONCAT_WS(' / ', NULLIF(l.building, ''), NULLIF(l.floor, ''), NULLIF(l.room, '')), '') AS location_name, p.order_number, p.invoice_number, p.purchase_date AS purchase_doc_date, supplier.name AS supplier_name, updater.full_name AS updated_by_name, creator.full_name AS created_by_name FROM equipment_items ei JOIN equipment_models em ON em.id = ei.model_id JOIN categories c ON c.id = em.category_id JOIN statuses s ON s.id = ei.status_id LEFT JOIN locations l ON l.id = ei.location_id LEFT JOIN purchases p ON p.id = ei.purchase_id LEFT JOIN suppliers supplier ON supplier.id = p.supplier_id LEFT JOIN users updater ON updater.id = ei.updated_by LEFT JOIN users creator ON creator.id = ei.created_by WHERE ei.id = %s LIMIT 1"
}
}