diff --git a/4/data.js b/4/data.js index e1d06bd..770a405 100644 --- a/4/data.js +++ b/4/data.js @@ -150,9 +150,11 @@ const ClassTypes = ['Theory', 'Practice'] const RegistrationStatuses = ['NotPaid', 'Paid'] const EquipmentUsageTypes = ['PayOnce', 'PayMonthly'] +const COUNT = 10 + function Values(callback, factor = 1) { let res = 'VALUES\n' - const count = 5 * factor + const count = COUNT * factor for (let i = 0; i < count; i++) { res += callback() @@ -166,6 +168,15 @@ function Values(callback, factor = 1) { return res } +function Many(insert, callback) { + let res = '' + + for (let i = 0; i < COUNT; i++) { + res += insert + ' ' + callback() + ';\n' + } + return res + '\n' +} + // Person let script = 'INSERT INTO "Person" (full_name, passwd_hash) ' + Values(() => { @@ -191,22 +202,23 @@ script += 'INSERT INTO "Studio" (address, capacity, begin_date, duration) ' + Va // Course script += 'INSERT INTO "Course" ("Master_id", name, price, deadline_date) ' + Values(() => { - return `(${GenInt(1, 6)}, 'курс ${GenMaxUInt(3)}', ${GenPrice()}, ${GenTimestamp()})` + return `(${GenInt(1, COUNT + 1)}, 'курс ${GenMaxUInt(3)}', ${GenPrice()}, ${GenTimestamp()})` }) // Class script += 'INSERT INTO "Class" (begin_date, "Course_id", "Studio_id", name, type, duration) ' + Values(() => { - return `(${GenTimestamp()}, ${GenInt(1, 6)}, ${GenInt(1, 6)}, 'занятие ${GenMaxUInt(100)}', '${ClassTypes[GenMaxUInt(ClassTypes.length)]}', ${GenIntervalHours()})` + return `(${GenTimestamp()}, ${GenInt(1, COUNT + 1)}, ${GenInt(1, COUNT + 1)}, 'занятие ${GenMaxUInt(100)}', '${ClassTypes[GenMaxUInt(ClassTypes.length)]}', ${GenIntervalHours()})` }) // Class_Master -script += `INSERT INTO "Class_Master" ("Class_begin_date", "Class_Course_id", "Master_id") - SELECT begin_date, "Course_id", ${GenInt(1, 6)} FROM "Class" LIMIT 1;\n\n` +script += Many(`INSERT INTO "Class_Master" ("Class_begin_date", "Class_Course_id", "Master_id")`, () => { + return `SELECT begin_date, "Course_id", ${GenInt(1, COUNT + 1)} FROM "Class" LIMIT 1 OFFSET ${GenInt(0, COUNT)}` +}) // Registration script += 'INSERT INTO "Registration" ("Client_id", "Course_id", date, status) ' + Values(() => { - return `(${GenInt(6, 11)}, ${GenInt(1, 6)}, ${GenTimestamp()}, '${RegistrationStatuses[GenMaxUInt(RegistrationStatuses.length)]}')` -}) + return `(${GenInt(COUNT + 1, COUNT * 2 + 1)}, ${GenInt(1, COUNT + 1)}, ${GenTimestamp()}, 'Paid')` +}, 0.5) // FoodProductEnum script += 'INSERT INTO "FoodProductEnum" (name, avg_price) ' + Values(() => { @@ -214,17 +226,19 @@ script += 'INSERT INTO "FoodProductEnum" (name, avg_price) ' + Values(() => { }) // FoodProduct -script += `INSERT INTO "FoodProduct" ("FoodProductEnum_id", "Class_begin_date", "Class_Course_id", buy_price, buy_date, delivery_price, delivery_date, expires_date) - SELECT ${GenInt(1, 6)}, begin_date, "Course_id", ${GenPrice()}, ${GenTimestamp()}, ${GenPrice()}, ${GenTimestamp()}, ${GenTimestamp()} FROM "Class" LIMIT 1;\n\n` +script += Many(`INSERT INTO "FoodProduct" ("FoodProductEnum_id", "Class_begin_date", "Class_Course_id", buy_price, buy_date, delivery_price, delivery_date, expires_date)`, () => { + return `SELECT ${GenInt(1, COUNT + 1)}, begin_date, "Course_id", ${GenPrice()}, ${GenTimestamp()}, ${GenPrice()}, ${GenTimestamp()}, ${GenTimestamp()} FROM "Class" LIMIT 1 OFFSET ${GenInt(0, COUNT)}` +}) // Equipment script += 'INSERT INTO "Equipment" ("Studio_id", name, usage_price, usage_type, delivery_price, delivery_date) ' + Values(() => { - return `(${GenInt(1, 6)}, 'оборудование ${GenMaxUInt(100)}', ${GenPrice(300)}, '${EquipmentUsageTypes[GenMaxUInt(EquipmentUsageTypes.length)]}', ${GenPrice(200)}, ${GenTimestamp()})` + return `(${GenInt(1, COUNT + 1)}, 'оборудование ${GenMaxUInt(100)}', ${GenPrice(300)}, '${EquipmentUsageTypes[GenMaxUInt(EquipmentUsageTypes.length)]}', ${GenPrice(200)}, ${GenTimestamp()})` }) // Class_Equipment -script += `INSERT INTO "Class_Equipment" ("Class_begin_date", "Class_Course_id", "Equipment_id") - SELECT begin_date, "Course_id", ${GenInt(1, 6)} FROM "Class" LIMIT 1;\n\n` +script += Many(`INSERT INTO "Class_Equipment" ("Class_begin_date", "Class_Course_id", "Equipment_id")`, () => { + return `SELECT begin_date, "Course_id", ${GenInt(1, COUNT + 1)} FROM "Class" LIMIT 1 OFFSET ${GenInt(0, COUNT)}` +}) // DrugEnum script += 'INSERT INTO "DrugEnum" (name, avg_price) ' + Values(() => { @@ -233,12 +247,17 @@ script += 'INSERT INTO "DrugEnum" (name, avg_price) ' + Values(() => { // Drug script += 'INSERT INTO "Drug" ("DrugEnum_id", "Course_id", buy_price, buy_date, delivery_price, delivery_date, expires_date) ' + Values(() => { - return `(${GenInt(1, 6)}, ${GenInt(1, 6)}, ${GenPrice()}, ${GenTimestamp()}, ${GenPrice()}, ${GenTimestamp()}, ${GenTimestamp()})` + return `(${GenInt(1, COUNT + 1)}, ${GenInt(1, COUNT + 1)}, ${GenPrice()}, ${GenTimestamp()}, ${GenPrice()}, ${GenTimestamp()}, ${GenTimestamp()})` +}) + +// DrugIntolerance +script += 'INSERT INTO "DrugIntolerance" ("Person_id", "DrugEnum_id") ' + Values(() => { + return `(${GenInt(1, COUNT * 2 + 1)}, ${GenInt(1, COUNT + 1)})` }) // ActivityLog script += 'INSERT INTO "ActivityLog" ("Person_id", action) ' + Values(() => { - return `(${GenInt(1, 10)}, 'login')` + return `(${GenInt(1, COUNT * 2 + 1)}, 'login')` }) const tables = [ diff --git a/4/deploy.sh b/4/deploy.sh index 0d0f745..c025218 100755 --- a/4/deploy.sh +++ b/4/deploy.sh @@ -1,7 +1,5 @@ #!/bin/bash -set -exu - source env.sh psql -e -q -f schema.sql psql -e -q -f data.sql