diff --git a/002_source/pocketbase/pb_hooks/.vscode/settings.json b/002_source/pocketbase/pb_hooks/.vscode/settings.json new file mode 100644 index 0000000..7c2feb7 --- /dev/null +++ b/002_source/pocketbase/pb_hooks/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.formatOnSave": false +} diff --git a/002_source/pocketbase/pb_hooks/assets/people1.png b/002_source/pocketbase/pb_hooks/assets/people1.png new file mode 100644 index 0000000..ac76f10 Binary files /dev/null and b/002_source/pocketbase/pb_hooks/assets/people1.png differ diff --git a/002_source/pocketbase/pb_hooks/assets/people2.png b/002_source/pocketbase/pb_hooks/assets/people2.png new file mode 100644 index 0000000..2fa26f4 Binary files /dev/null and b/002_source/pocketbase/pb_hooks/assets/people2.png differ diff --git a/002_source/pocketbase/pb_hooks/assets/people3.png b/002_source/pocketbase/pb_hooks/assets/people3.png new file mode 100644 index 0000000..e5312ae Binary files /dev/null and b/002_source/pocketbase/pb_hooks/assets/people3.png differ diff --git a/002_source/pocketbase/pb_hooks/assets/people4.png b/002_source/pocketbase/pb_hooks/assets/people4.png new file mode 100644 index 0000000..9cae02c Binary files /dev/null and b/002_source/pocketbase/pb_hooks/assets/people4.png differ diff --git a/002_source/pocketbase/pb_hooks/assets/people5.png b/002_source/pocketbase/pb_hooks/assets/people5.png new file mode 100644 index 0000000..327af31 Binary files /dev/null and b/002_source/pocketbase/pb_hooks/assets/people5.png differ diff --git a/002_source/pocketbase/pb_hooks/seed.pb.js b/002_source/pocketbase/pb_hooks/seed.pb.js index 71ab7df..4502bcf 100644 --- a/002_source/pocketbase/pb_hooks/seed.pb.js +++ b/002_source/pocketbase/pb_hooks/seed.pb.js @@ -22,6 +22,11 @@ $app.rootCmd.addCommand( // require(`${__hooks}/seed/020_QuizLPCategories.js`)($app); require(`${__hooks}/seed/021_QuizLPQuestions.js`)($app); + // + require(`${__hooks}/seed/030_QuizMFCategories.js`)($app); + require(`${__hooks}/seed/031_QuizMFQuestions.js`)($app); + // + require(`${__hooks}/seed/040_QuizCRCategories.js`)($app); $app.reloadCachedCollections(); $app.reloadSettings(); diff --git a/002_source/pocketbase/pb_hooks/seed/004_clean_users.js b/002_source/pocketbase/pb_hooks/seed/004_clean_users.js new file mode 100644 index 0000000..1ef99cd --- /dev/null +++ b/002_source/pocketbase/pb_hooks/seed/004_clean_users.js @@ -0,0 +1,14 @@ +module.exports = ($app) => { + console.log("004 clean user table start"); + + dirtyTruncateTable("Users"); + dirtyTruncateTable("UserMetas"); + + console.log("004 clean user table done"); +}; + +const dirtyTruncateTable = (COLLECTION_NAME) => { + console.log(`perform dirty method to truncate table "${COLLECTION_NAME}"`); + const cmd_to_exec = $os.cmd("sqlite3", "/pb_data/data.db", `DELETE from ${COLLECTION_NAME};`); + cmd_to_exec.output(); +}; diff --git a/002_source/pocketbase/pb_hooks/seed/005_Users_teacher.js b/002_source/pocketbase/pb_hooks/seed/005_Users_teacher.js new file mode 100644 index 0000000..bf2bb3c --- /dev/null +++ b/002_source/pocketbase/pb_hooks/seed/005_Users_teacher.js @@ -0,0 +1,81 @@ +module.exports = ($app) => { + const ASSETS_DIR = "/pb_hooks/assets"; + const getAsset = (name) => $filesystem.fileFromPath(ASSETS_DIR + "/" + name); + const id_v = "1".padStart(15, 0); //id_vocabulary + const id_c = "2".padStart(15, 0); //id_connectives + + let row_array = [ + ["11".padStart(15, 0), "teacher1@123.com", "teacher1@123.com", "teacher1@123.com", true, true, "test_user_1"], + ["12".padStart(15, 0), "teacher2@123.com", "teacher2@123.com", "teacher2@123.com", true, true, "test_user_2"], + ["13".padStart(15, 0), "teacher3@123.com", "teacher3@123.com", "teacher3@123.com", true, true, "test_user_3"], + ]; + + let um_row_array = [ + [ + "11".padStart(15, 0), + "teacher1@123.com", + "active", + "11".padStart(15, 0), + JSON.stringify({}), + getAsset("people1.png"), + "teacher", + // + ], + [ + "12".padStart(15, 0), + "teacher2@123.com", + "active", + "12".padStart(15, 0), + JSON.stringify({}), + getAsset("people2.png"), + "teacher", + // + ], + [ + "13".padStart(15, 0), + "teacher3@123.com", + "active", + "13".padStart(15, 0), + JSON.stringify({}), + getAsset("people3.png"), + "teacher", + // + ], + ]; + + let users_collection = $app.findCollectionByNameOrId("users"); + let user_metas_collection = $app.findCollectionByNameOrId("UserMetas"); + + for (let i = 0; i < row_array.length; i++) { + let user = row_array[i]; + let um = um_row_array[i]; + + let record = new Record(users_collection); + record.set("id", user[0]); + record.set("password", user[1]); + record.set("passwordConfirm", user[2]); + record.set("email", user[3]); + record.set("emailVisibility", user[4]); + record.set("verified", user[5]); + record.set("name", user[6]); + $app.save(record); + + let um_record = new Record(user_metas_collection); + um_record.set("id", um[0]); + um_record.set("helloworld", um[1]); + um_record.set("state", um[2]); + um_record.set("user_id", um[3]); + um_record.set("meta", um[4]); + um_record.set("avatar", um[5]); + um_record.set("role", um[6]); + $app.save(um_record); + } + + console.log("005 add teacher user done"); +}; + +const dirtyTruncateTable = (COLLECTION_NAME) => { + console.log(`perform dirty method to truncate table "${COLLECTION_NAME}"`); + const cmd_to_exec = $os.cmd("sqlite3", "/pb_data/data.db", `DELETE from ${COLLECTION_NAME};`); + cmd_to_exec.output(); +}; diff --git a/002_source/pocketbase/pb_hooks/seed/006_Users_student.js b/002_source/pocketbase/pb_hooks/seed/006_Users_student.js new file mode 100644 index 0000000..17e7b81 --- /dev/null +++ b/002_source/pocketbase/pb_hooks/seed/006_Users_student.js @@ -0,0 +1,58 @@ +module.exports = ($app) => { + const ASSETS_DIR = "/pb_hooks/assets"; + const getAsset = (name) => $filesystem.fileFromPath(ASSETS_DIR + "/" + name); + const id_v = "1".padStart(15, 0); //id_vocabulary + const id_c = "2".padStart(15, 0); //id_connectives + + let row_array = [ + ["1".padStart(15, 0), "user1@123.com", "user1@123.com", "user1@123.com", true, true, "test_user_1"], + ["2".padStart(15, 0), "user2@123.com", "user2@123.com", "user2@123.com", true, true, "test_user_2"], + ["3".padStart(15, 0), "user3@123.com", "user3@123.com", "user3@123.com", true, true, "test_user_3"], + ["4".padStart(15, 0), "user4@123.com", "user4@123.com", "user4@123.com", true, true, "test_user_4"], + ["5".padStart(15, 0), "user5@123.com", "user5@123.com", "user5@123.com", true, true, "test_user_5"], + ]; + + let um_row_array = [ + ["1".padStart(15, 0), "user1@123.com", "active", "1".padStart(15, 0), JSON.stringify({}), getAsset("people1.png"), "student"], + ["2".padStart(15, 0), "user2@123.com", "active", "2".padStart(15, 0), JSON.stringify({}), getAsset("people2.png"), "student"], + ["3".padStart(15, 0), "user3@123.com", "active", "3".padStart(15, 0), JSON.stringify({}), getAsset("people3.png"), "student"], + ["4".padStart(15, 0), "user4@123.com", "active", "4".padStart(15, 0), JSON.stringify({}), getAsset("people4.png"), "student"], + ["5".padStart(15, 0), "user5@123.com", "active", "5".padStart(15, 0), JSON.stringify({}), getAsset("people5.png"), "student"], + ]; + + let users_collection = $app.findCollectionByNameOrId("users"); + let user_metas_collection = $app.findCollectionByNameOrId("UserMetas"); + + for (let i = 0; i < row_array.length; i++) { + let user = row_array[i]; + let um = um_row_array[i]; + + let record = new Record(users_collection); + record.set("id", user[0]); + record.set("password", user[1]); + record.set("passwordConfirm", user[2]); + record.set("email", user[3]); + record.set("emailVisibility", user[4]); + record.set("verified", user[5]); + record.set("name", user[6]); + $app.save(record); + + let um_record = new Record(user_metas_collection); + um_record.set("id", um[0]); + um_record.set("helloworld", um[1]); + um_record.set("state", um[2]); + um_record.set("user_id", um[3]); + um_record.set("meta", um[4]); + um_record.set("avatar", um[5]); + um_record.set("role", um[6]); + $app.save(um_record); + } + + console.log("006 add student user done"); +}; + +const dirtyTruncateTable = (COLLECTION_NAME) => { + console.log(`perform dirty method to truncate table "${COLLECTION_NAME}"`); + const cmd_to_exec = $os.cmd("sqlite3", "/pb_data/data.db", `DELETE from ${COLLECTION_NAME};`); + cmd_to_exec.output(); +}; diff --git a/002_source/pocketbase/pb_hooks/seed/020_QuizLPCategories.js b/002_source/pocketbase/pb_hooks/seed/020_QuizLPCategories.js new file mode 100644 index 0000000..2760ca9 --- /dev/null +++ b/002_source/pocketbase/pb_hooks/seed/020_QuizLPCategories.js @@ -0,0 +1,43 @@ +module.exports = ($app) => { + const ASSETS_DIR = "/pb_hooks/assets"; + const getAsset = (name) => $filesystem.fileFromPath(ASSETS_DIR + "/" + name); + const id_v = "1".padStart(15, 0); //id_vocabulary + const id_c = "2".padStart(15, 0); //id_connectives + const getId = (id) => id.padStart(15, 0); + let row_array = [ + [getId("1"), "news (listening)", getAsset("ci_news.jpg"), 1, {}, "visible"], + [getId("2"), "sports (listening)", getAsset("ci_sports.jpg"), 2, {}, "visible"], + [getId("3"), "technology (listening)", getAsset("ci_technology.jpg"), 3, {}, "visible"], + [getId("4"), "art (listening)", getAsset("ci_art.jpg"), 4, {}, "visible"], + [getId("5"), "basic (listening)", getAsset("ci_basic.jpg"), 5, {}, "visible"], + [getId("6"), "nature (listening)", getAsset("ci_nature.jpg"), 6, {}, "visible"], + [getId("7"), "workplace (listening)", getAsset("ci_workplace.jpg"), 7, {}, "visible"], + [getId("8"), "workplace (listening)", getAsset("ci_workplace.jpg"), 8, {}, "visible"], + [getId("99"), "test hidden (listening)", getAsset("ci_workplace.jpg"), 9, {}, "hidden"], + ]; + dirtyTruncateTable("QuizLPCategories"); + + let lt_collection = $app.findCollectionByNameOrId("QuizLPCategories"); + + for (let i = 0; i < row_array.length; i++) { + let lesson_type = row_array[i]; + + let record = new Record(lt_collection); + record.set("id", lesson_type[0]); + record.set("cat_name", lesson_type[1]); + record.set("cat_image", lesson_type[2]); + record.set("pos", lesson_type[3]); + record.set("init_answer", lesson_type[4]); + record.set("visible", lesson_type[5]); + + $app.save(record); + } + + console.log(`020_QuizLPCategories done`); +}; + +const dirtyTruncateTable = (COLLECTION_NAME) => { + console.log(`perform dirty method to truncate table "${COLLECTION_NAME}"`); + const cmd_to_exec = $os.cmd("sqlite3", "/pb_data/data.db", `DELETE from ${COLLECTION_NAME};`); + cmd_to_exec.output(); +}; diff --git a/002_source/pocketbase/pb_hooks/seed/021_QuizLPQuestions.js b/002_source/pocketbase/pb_hooks/seed/021_QuizLPQuestions.js new file mode 100644 index 0000000..36eeb25 --- /dev/null +++ b/002_source/pocketbase/pb_hooks/seed/021_QuizLPQuestions.js @@ -0,0 +1,47 @@ +module.exports = ($app) => { + const ASSETS_DIR = "/pb_hooks/assets"; + const getAsset = (name) => $filesystem.fileFromPath(ASSETS_DIR + "/" + name); + const id_v = "1".padStart(15, 0); //id_vocabulary + const id_c = "2".padStart(15, 0); //id_connectives + const cat_id_technology = "3".padStart(15, 0); + const getId = (id) => id.padStart(15, 0); + let row_array = [ + [getId("1") ,"news (LP)" ,getAsset("ci_news.jpg") ,1 ,{} ,"visible" ,"news" ,getAsset("keyboard.mp3") ,cat_id_technology] , + [getId("2") ,"sports (LP)" ,getAsset("ci_sports.jpg") ,2 ,{} ,"visible" ,"sports" ,getAsset("mouse.mp3") ,cat_id_technology] , + [getId("3") ,"technology (LP)" ,getAsset("ci_technology.jpg") ,3 ,{} ,"visible" ,"technology" ,getAsset("keyboard.mp3") ,cat_id_technology] , + [getId("4") ,"art (LP)" ,getAsset("ci_art.jpg") ,4 ,{} ,"visible" ,"art" ,getAsset("mouse.mp3") ,cat_id_technology] , + [getId("5") ,"basic (LP)" ,getAsset("ci_basic.jpg") ,5 ,{} ,"visible" ,"basic" ,getAsset("keyboard.mp3") ,cat_id_technology] , + [getId("6") ,"nature (LP)" ,getAsset("ci_nature.jpg") ,6 ,{} ,"visible" ,"nature" ,getAsset("keyboard.mp3") ,cat_id_technology] , + [getId("7") ,"workplace (LP)" ,getAsset("ci_workplace.jpg") ,7 ,{} ,"visible" ,"workplace" ,getAsset("keyboard.mp3") ,cat_id_technology] , + [getId("8") ,"workplace (LP)" ,getAsset("ci_workplace.jpg") ,8 ,{} ,"visible" ,"workplace" ,getAsset("keyboard.mp3") ,cat_id_technology] , + [getId("99") ,"test hidden (LP)" ,getAsset("ci_workplace.jpg") ,9 ,{} ,"hidden" ,"test" ,getAsset("keyboard.mp3") ,cat_id_technology] , + ]; + dirtyTruncateTable("QuizLPQuestions"); + + let lt_collection = $app.findCollectionByNameOrId("QuizLPQuestions"); + + for (let i = 0; i < row_array.length; i++) { + let lesson_type = row_array[i]; + + let record = new Record(lt_collection); + record.set("id", lesson_type[0]); + record.set("cat_name", lesson_type[1]); + record.set("cat_image", lesson_type[2]); + record.set("pos", lesson_type[3]); + record.set("init_answer", lesson_type[4]); + record.set("visible", lesson_type[5]); + record.set("word", lesson_type[6]); + record.set("sound", lesson_type[7]); + record.set("cat_id", lesson_type[7]); + + $app.save(record); + } + + console.log(`021_QuizLPQuestions done`); +}; + +const dirtyTruncateTable = (COLLECTION_NAME) => { + console.log(`perform dirty method to truncate table "${COLLECTION_NAME}"`); + const cmd_to_exec = $os.cmd("sqlite3", "/pb_data/data.db", `DELETE from ${COLLECTION_NAME};`); + cmd_to_exec.output(); +}; diff --git a/002_source/pocketbase/pb_hooks/seed/021_QuizLPQuestions.js.plan b/002_source/pocketbase/pb_hooks/seed/021_QuizLPQuestions.js.plan new file mode 100644 index 0000000..eed97f9 --- /dev/null +++ b/002_source/pocketbase/pb_hooks/seed/021_QuizLPQuestions.js.plan @@ -0,0 +1,35 @@ +module.exports = ($app) => { + const ASSETS_DIR = "/pb_hooks/assets"; + const getAsset = (name) => $filesystem.fileFromPath(ASSETS_DIR + "/" + name); + const getId = (id) => id.padStart(15, 0); + const id_v = getId("1"); //id_vocabulary + const id_c = getId("2"); //id_connectives + + let row_array = [ + [getId("1"), "keyboard", getAsset("keyboard.jpg"), getId("1")], + [getId("2"), "mouse", getAsset("mouse.jpg"), getId("1")], + ]; + dirtyTruncateTable("QuizLPQuestions"); + + let lt_collection = $app.findCollectionByNameOrId("QuizLPQuestions"); + + for (let i = 0; i < row_array.length; i++) { + let lesson_type = row_array[i]; + + let record = new Record(lt_collection); + record.set("id", lesson_type[0]); + record.set("word", lesson_type[1]); + record.set("sound", lesson_type[2]); + record.set("cat_id", lesson_type[3]); + + $app.save(record); + } + + console.log(`021 QuizLPQuestions done`); +}; + +const dirtyTruncateTable = (COLLECTION_NAME) => { + console.log(`perform dirty method to truncate table "${COLLECTION_NAME}"`); + const cmd_to_exec = $os.cmd("sqlite3", "/pb_data/data.db", `DELETE from ${COLLECTION_NAME};`); + cmd_to_exec.output(); +}; diff --git a/002_source/pocketbase/pb_hooks/seed/030_QuizMFCategories.js b/002_source/pocketbase/pb_hooks/seed/030_QuizMFCategories.js new file mode 100644 index 0000000..15b48bc --- /dev/null +++ b/002_source/pocketbase/pb_hooks/seed/030_QuizMFCategories.js @@ -0,0 +1,43 @@ +module.exports = ($app) => { + const ASSETS_DIR = "/pb_hooks/assets"; + const getAsset = (name) => $filesystem.fileFromPath(ASSETS_DIR + "/" + name); + const id_v = "1".padStart(15, 0); //id_vocabulary + const id_c = "2".padStart(15, 0); //id_connectives + const getId = (id) => id.padStart(15, 0); + let row_array = [ + [getId("1"), "news (matching)", getAsset("ci_news.jpg"), 1, {}, "visible"], + [getId("2"), "sports (matching)", getAsset("ci_sports.jpg"), 2, {}, "visible"], + [getId("3"), "technology (matching)", getAsset("ci_technology.jpg"), 3, {}, "visible"], + [getId("4"), "art (matching)", getAsset("ci_art.jpg"), 4, {}, "visible"], + [getId("5"), "basic (matching)", getAsset("ci_basic.jpg"), 5, {}, "visible"], + [getId("6"), "nature (matching)", getAsset("ci_nature.jpg"), 6, {}, "visible"], + [getId("7"), "workplace (matching)", getAsset("ci_workplace.jpg"), 7, {}, "visible"], + [getId("8"), "workplace (matching)", getAsset("ci_workplace.jpg"), 8, {}, "visible"], + [getId("99"), "test hidden (matching)", getAsset("ci_workplace.jpg"), 9, {}, "hidden"], + ]; + dirtyTruncateTable("QuizMFCategories"); + + let lt_collection = $app.findCollectionByNameOrId("QuizMFCategories"); + + for (let i = 0; i < row_array.length; i++) { + let lesson_type = row_array[i]; + + let record = new Record(lt_collection); + record.set("id", lesson_type[0]); + record.set("cat_name", lesson_type[1]); + record.set("cat_image", lesson_type[2]); + record.set("pos", lesson_type[3]); + record.set("init_answer", lesson_type[4]); + record.set("visible", lesson_type[5]); + + $app.save(record); + } + + console.log(`030_QuizMFCategories done`); +}; + +const dirtyTruncateTable = (COLLECTION_NAME) => { + console.log(`perform dirty method to truncate table "${COLLECTION_NAME}"`); + const cmd_to_exec = $os.cmd("sqlite3", "/pb_data/data.db", `DELETE from ${COLLECTION_NAME};`); + cmd_to_exec.output(); +}; diff --git a/002_source/pocketbase/pb_hooks/seed/031_QuizMFQuestions.js b/002_source/pocketbase/pb_hooks/seed/031_QuizMFQuestions.js new file mode 100644 index 0000000..1c40ecd --- /dev/null +++ b/002_source/pocketbase/pb_hooks/seed/031_QuizMFQuestions.js @@ -0,0 +1,43 @@ +module.exports = ($app) => { + const ASSETS_DIR = "/pb_hooks/assets"; + const getAsset = (name) => $filesystem.fileFromPath(ASSETS_DIR + "/" + name); + const id_v = "1".padStart(15, 0); //id_vocabulary + const id_c = "2".padStart(15, 0); //id_connectives + const getId = (id) => id.padStart(15, 0); + let row_array = [ + [getId("1"), "news (MF)", getAsset("ci_news.jpg"), 1, {}, "visible"], + [getId("2"), "sports (MF)", getAsset("ci_sports.jpg"), 2, {}, "visible"], + [getId("3"), "technology (MF)", getAsset("ci_technology.jpg"), 3, {}, "visible"], + [getId("4"), "art (MF)", getAsset("ci_art.jpg"), 4, {}, "visible"], + [getId("5"), "basic (MF)", getAsset("ci_basic.jpg"), 5, {}, "visible"], + [getId("6"), "nature (MF)", getAsset("ci_nature.jpg"), 6, {}, "visible"], + [getId("7"), "workplace (MF)", getAsset("ci_workplace.jpg"), 7, {}, "visible"], + [getId("8"), "workplace (MF)", getAsset("ci_workplace.jpg"), 8, {}, "visible"], + [getId("99"), "test hidden (MF)", getAsset("ci_workplace.jpg"), 9, {}, "hidden"], + ]; + dirtyTruncateTable("QuizMFQuestions"); + + let lt_collection = $app.findCollectionByNameOrId("QuizMFQuestions"); + + for (let i = 0; i < row_array.length; i++) { + let lesson_type = row_array[i]; + + let record = new Record(lt_collection); + record.set("id", lesson_type[0]); + record.set("cat_name", lesson_type[1]); + record.set("cat_image", lesson_type[2]); + record.set("pos", lesson_type[3]); + record.set("init_answer", lesson_type[4]); + record.set("visible", lesson_type[5]); + + $app.save(record); + } + + console.log(`031_QuizMFQuestions done`); +}; + +const dirtyTruncateTable = (COLLECTION_NAME) => { + console.log(`perform dirty method to truncate table "${COLLECTION_NAME}"`); + const cmd_to_exec = $os.cmd("sqlite3", "/pb_data/data.db", `DELETE from ${COLLECTION_NAME};`); + cmd_to_exec.output(); +}; diff --git a/002_source/pocketbase/pb_hooks/seed/040_QuizCRCategories.js b/002_source/pocketbase/pb_hooks/seed/040_QuizCRCategories.js new file mode 100644 index 0000000..d36a94f --- /dev/null +++ b/002_source/pocketbase/pb_hooks/seed/040_QuizCRCategories.js @@ -0,0 +1,43 @@ +module.exports = ($app) => { + const ASSETS_DIR = "/pb_hooks/assets"; + const getAsset = (name) => $filesystem.fileFromPath(ASSETS_DIR + "/" + name); + const id_v = "1".padStart(15, 0); //id_vocabulary + const id_c = "2".padStart(15, 0); //id_connectives + const getId = (id) => id.padStart(15, 0); + let row_array = [ + [getId("1"), "news (connect)", getAsset("ci_news.jpg"), 1, {}, "visible"], + [getId("2"), "sports (connect)", getAsset("ci_sports.jpg"), 2, {}, "visible"], + [getId("3"), "technology (connect)", getAsset("ci_technology.jpg"), 3, {}, "visible"], + [getId("4"), "art (connect)", getAsset("ci_art.jpg"), 4, {}, "visible"], + [getId("5"), "basic (connect)", getAsset("ci_basic.jpg"), 5, {}, "visible"], + [getId("6"), "nature (connect)", getAsset("ci_nature.jpg"), 6, {}, "visible"], + [getId("7"), "workplace (connect)", getAsset("ci_workplace.jpg"), 7, {}, "visible"], + [getId("8"), "workplace (connect)", getAsset("ci_workplace.jpg"), 8, {}, "visible"], + [getId("99"), "test hidden (connect)", getAsset("ci_workplace.jpg"), 9, {}, "hidden"], + ]; + dirtyTruncateTable("QuizMFCategories"); + + let lt_collection = $app.findCollectionByNameOrId("QuizMFCategories"); + + for (let i = 0; i < row_array.length; i++) { + let lesson_type = row_array[i]; + + let record = new Record(lt_collection); + record.set("id", lesson_type[0]); + record.set("cat_name", lesson_type[1]); + record.set("cat_image", lesson_type[2]); + record.set("pos", lesson_type[3]); + record.set("init_answer", lesson_type[4]); + record.set("visible", lesson_type[5]); + + $app.save(record); + } + + console.log(`030_QuizMFCategories done`); +}; + +const dirtyTruncateTable = (COLLECTION_NAME) => { + console.log(`perform dirty method to truncate table "${COLLECTION_NAME}"`); + const cmd_to_exec = $os.cmd("sqlite3", "/pb_data/data.db", `DELETE from ${COLLECTION_NAME};`); + cmd_to_exec.output(); +}; diff --git a/002_source/pocketbase/pb_hooks/seed/schema.json b/002_source/pocketbase/pb_hooks/seed/schema.json index 1548ff9..5f6a265 100644 --- a/002_source/pocketbase/pb_hooks/seed/schema.json +++ b/002_source/pocketbase/pb_hooks/seed/schema.json @@ -1356,6 +1356,20 @@ "presentable": false, "system": false, "type": "autodate" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "text2058414169", + "max": 0, + "min": 0, + "name": "visible", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" } ], "indexes": [], diff --git a/002_source/pocketbase/pb_migrations/1745000156_updated_UserMetas.js b/002_source/pocketbase/pb_migrations/1745000156_updated_UserMetas.js new file mode 100644 index 0000000..1f78b24 --- /dev/null +++ b/002_source/pocketbase/pb_migrations/1745000156_updated_UserMetas.js @@ -0,0 +1,29 @@ +/// +migrate((app) => { + const collection = app.findCollectionByNameOrId("pbc_1305841361") + + // add field + collection.fields.addAt(7, new Field({ + "hidden": false, + "id": "file376926767", + "maxSelect": 1, + "maxSize": 0, + "mimeTypes": [], + "name": "avatar", + "presentable": false, + "protected": false, + "required": false, + "system": false, + "thumbs": [], + "type": "file" + })) + + return app.save(collection) +}, (app) => { + const collection = app.findCollectionByNameOrId("pbc_1305841361") + + // remove field + collection.fields.removeById("file376926767") + + return app.save(collection) +}) diff --git a/002_source/pocketbase/pb_migrations/1745000989_updated_UserMetas.js b/002_source/pocketbase/pb_migrations/1745000989_updated_UserMetas.js new file mode 100644 index 0000000..85048af --- /dev/null +++ b/002_source/pocketbase/pb_migrations/1745000989_updated_UserMetas.js @@ -0,0 +1,29 @@ +/// +migrate((app) => { + const collection = app.findCollectionByNameOrId("pbc_1305841361") + + // add field + collection.fields.addAt(8, new Field({ + "autogeneratePattern": "", + "hidden": false, + "id": "text1466534506", + "max": 0, + "min": 0, + "name": "role", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + })) + + return app.save(collection) +}, (app) => { + const collection = app.findCollectionByNameOrId("pbc_1305841361") + + // remove field + collection.fields.removeById("text1466534506") + + return app.save(collection) +}) diff --git a/002_source/pocketbase/pb_migrations/1745047253_updated_QuizLPCategories.js b/002_source/pocketbase/pb_migrations/1745047253_updated_QuizLPCategories.js new file mode 100644 index 0000000..90cde30 --- /dev/null +++ b/002_source/pocketbase/pb_migrations/1745047253_updated_QuizLPCategories.js @@ -0,0 +1,29 @@ +/// +migrate((app) => { + const collection = app.findCollectionByNameOrId("pbc_3639453778") + + // add field + collection.fields.addAt(5, new Field({ + "autogeneratePattern": "", + "hidden": false, + "id": "text2058414169", + "max": 0, + "min": 0, + "name": "visible", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + })) + + return app.save(collection) +}, (app) => { + const collection = app.findCollectionByNameOrId("pbc_3639453778") + + // remove field + collection.fields.removeById("text2058414169") + + return app.save(collection) +}) diff --git a/002_source/pocketbase/pb_migrations/1745093148_updated_QuizLPCategories.js b/002_source/pocketbase/pb_migrations/1745093148_updated_QuizLPCategories.js new file mode 100644 index 0000000..b5d897e --- /dev/null +++ b/002_source/pocketbase/pb_migrations/1745093148_updated_QuizLPCategories.js @@ -0,0 +1,29 @@ +/// +migrate((app) => { + const collection = app.findCollectionByNameOrId("pbc_3639453778") + + // add field + collection.fields.addAt(8, new Field({ + "autogeneratePattern": "", + "hidden": false, + "id": "text2560465762", + "max": 0, + "min": 0, + "name": "slug", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + })) + + return app.save(collection) +}, (app) => { + const collection = app.findCollectionByNameOrId("pbc_3639453778") + + // remove field + collection.fields.removeById("text2560465762") + + return app.save(collection) +}) diff --git a/002_source/pocketbase/pb_migrations/1745143917_updated_UserMetas.js b/002_source/pocketbase/pb_migrations/1745143917_updated_UserMetas.js new file mode 100644 index 0000000..096dc36 --- /dev/null +++ b/002_source/pocketbase/pb_migrations/1745143917_updated_UserMetas.js @@ -0,0 +1,28 @@ +/// +migrate((app) => { + const collection = app.findCollectionByNameOrId("pbc_1305841361") + + // update collection data + unmarshal({ + "createRule": "", + "deleteRule": "", + "listRule": "", + "updateRule": "", + "viewRule": "" + }, collection) + + return app.save(collection) +}, (app) => { + const collection = app.findCollectionByNameOrId("pbc_1305841361") + + // update collection data + unmarshal({ + "createRule": null, + "deleteRule": null, + "listRule": null, + "updateRule": null, + "viewRule": null + }, collection) + + return app.save(collection) +}) diff --git a/002_source/pocketbase/pb_migrations/1745165249_updated_QuizLPCategories.js b/002_source/pocketbase/pb_migrations/1745165249_updated_QuizLPCategories.js new file mode 100644 index 0000000..a4895a1 --- /dev/null +++ b/002_source/pocketbase/pb_migrations/1745165249_updated_QuizLPCategories.js @@ -0,0 +1,45 @@ +/// +migrate((app) => { + const collection = app.findCollectionByNameOrId("pbc_3639453778") + + // add field + collection.fields.addAt(9, new Field({ + "autogeneratePattern": "", + "hidden": false, + "id": "text1156222427", + "max": 0, + "min": 0, + "name": "remarks", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + })) + + // add field + collection.fields.addAt(10, new Field({ + "convertURLs": false, + "hidden": false, + "id": "editor1843675174", + "maxSize": 0, + "name": "description", + "presentable": false, + "required": false, + "system": false, + "type": "editor" + })) + + return app.save(collection) +}, (app) => { + const collection = app.findCollectionByNameOrId("pbc_3639453778") + + // remove field + collection.fields.removeById("text1156222427") + + // remove field + collection.fields.removeById("editor1843675174") + + return app.save(collection) +}) diff --git a/002_source/pocketbase/pb_migrations/1745188429_updated_QuizMFCategories.js b/002_source/pocketbase/pb_migrations/1745188429_updated_QuizMFCategories.js new file mode 100644 index 0000000..8d9b68a --- /dev/null +++ b/002_source/pocketbase/pb_migrations/1745188429_updated_QuizMFCategories.js @@ -0,0 +1,29 @@ +/// +migrate((app) => { + const collection = app.findCollectionByNameOrId("pbc_84667061") + + // add field + collection.fields.addAt(5, new Field({ + "autogeneratePattern": "", + "hidden": false, + "id": "text2058414169", + "max": 0, + "min": 0, + "name": "visible", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + })) + + return app.save(collection) +}, (app) => { + const collection = app.findCollectionByNameOrId("pbc_84667061") + + // remove field + collection.fields.removeById("text2058414169") + + return app.save(collection) +}) diff --git a/002_source/pocketbase/pb_migrations/1745198654_updated_QuizLPQuestions.js b/002_source/pocketbase/pb_migrations/1745198654_updated_QuizLPQuestions.js new file mode 100644 index 0000000..58606b3 --- /dev/null +++ b/002_source/pocketbase/pb_migrations/1745198654_updated_QuizLPQuestions.js @@ -0,0 +1,153 @@ +/// +migrate((app) => { + const collection = app.findCollectionByNameOrId("pbc_742947356") + + // add field + collection.fields.addAt(4, new Field({ + "autogeneratePattern": "", + "hidden": false, + "id": "text1125157303", + "max": 0, + "min": 0, + "name": "cat_name", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + })) + + // add field + collection.fields.addAt(5, new Field({ + "hidden": false, + "id": "file2034676914", + "maxSelect": 1, + "maxSize": 0, + "mimeTypes": [], + "name": "cat_image", + "presentable": false, + "protected": false, + "required": false, + "system": false, + "thumbs": [], + "type": "file" + })) + + // add field + collection.fields.addAt(6, new Field({ + "hidden": false, + "id": "number2161764012", + "max": null, + "min": null, + "name": "pos", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + })) + + // add field + collection.fields.addAt(7, new Field({ + "hidden": false, + "id": "json3915970527", + "maxSize": 0, + "name": "init_answer", + "presentable": false, + "required": false, + "system": false, + "type": "json" + })) + + // add field + collection.fields.addAt(8, new Field({ + "autogeneratePattern": "", + "hidden": false, + "id": "text2058414169", + "max": 0, + "min": 0, + "name": "visible", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + })) + + // add field + collection.fields.addAt(9, new Field({ + "autogeneratePattern": "", + "hidden": false, + "id": "text2560465762", + "max": 0, + "min": 0, + "name": "slug", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + })) + + // add field + collection.fields.addAt(10, new Field({ + "autogeneratePattern": "", + "hidden": false, + "id": "text1156222427", + "max": 0, + "min": 0, + "name": "remarks", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + })) + + // add field + collection.fields.addAt(11, new Field({ + "convertURLs": false, + "hidden": false, + "id": "editor1843675174", + "maxSize": 0, + "name": "description", + "presentable": false, + "required": false, + "system": false, + "type": "editor" + })) + + return app.save(collection) +}, (app) => { + const collection = app.findCollectionByNameOrId("pbc_742947356") + + // remove field + collection.fields.removeById("text1125157303") + + // remove field + collection.fields.removeById("file2034676914") + + // remove field + collection.fields.removeById("number2161764012") + + // remove field + collection.fields.removeById("json3915970527") + + // remove field + collection.fields.removeById("text2058414169") + + // remove field + collection.fields.removeById("text2560465762") + + // remove field + collection.fields.removeById("text1156222427") + + // remove field + collection.fields.removeById("editor1843675174") + + return app.save(collection) +}) diff --git a/002_source/pocketbase/pb_migrations/1745241212_updated_UserMetas.js b/002_source/pocketbase/pb_migrations/1745241212_updated_UserMetas.js new file mode 100644 index 0000000..096dc36 --- /dev/null +++ b/002_source/pocketbase/pb_migrations/1745241212_updated_UserMetas.js @@ -0,0 +1,28 @@ +/// +migrate((app) => { + const collection = app.findCollectionByNameOrId("pbc_1305841361") + + // update collection data + unmarshal({ + "createRule": "", + "deleteRule": "", + "listRule": "", + "updateRule": "", + "viewRule": "" + }, collection) + + return app.save(collection) +}, (app) => { + const collection = app.findCollectionByNameOrId("pbc_1305841361") + + // update collection data + unmarshal({ + "createRule": null, + "deleteRule": null, + "listRule": null, + "updateRule": null, + "viewRule": null + }, collection) + + return app.save(collection) +})