diff --git a/compose.test.yml b/compose.test.yml index 18478d8..37b8e04 100644 --- a/compose.test.yml +++ b/compose.test.yml @@ -6,21 +6,29 @@ services: POSTGRES_PASSWORD: testpass POSTGRES_USER: postgres POSTGRES_DB: polympr_test + volumes: + # Init script strips drizzle-kit markers and applies migrations on first start + - ./databases/docker-init.sh:/docker-entrypoint-initdb.d/01-migrate.sh:ro + - ./databases/migrations:/migrations:ro + - db_data_test:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 10 - migrate: + app: image: denoland/deno:alpine working_dir: /app volumes: - .:/app - command: task migrate + - deno_cache:/deno-dir + command: run -A --unstable-ffi main.ts + ports: + - "4430:443" environment: POSTGRES_HOST: db - POSTGRES_PORT: 5432 + POSTGRES_PORT: "5432" POSTGRES_USER: postgres POSTGRES_PASS: testpass POSTGRES_DB: polympr_test @@ -29,21 +37,6 @@ services: db: condition: service_healthy - app: - image: denoland/deno:alpine - working_dir: /app - volumes: - - .:/app - command: run -A --unstable-ffi main.ts - ports: - - "4430:443" - environment: - POSTGRES_HOST: db - POSTGRES_PORT: 5432 - POSTGRES_USER: postgres - POSTGRES_PASS: testpass - POSTGRES_DB: polympr_test - LOCAL: "true" - depends_on: - migrate: - condition: service_completed_successfully +volumes: + db_data_test: + deno_cache: diff --git a/databases/docker-init.sh b/databases/docker-init.sh new file mode 100755 index 0000000..0db1cf6 --- /dev/null +++ b/databases/docker-init.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Applied by postgres on first container startup via /docker-entrypoint-initdb.d. +# drizzle-kit migration files use "--> statement-breakpoint" markers which are +# not valid SQL — strip them before applying. +set -e +for f in /migrations/*.sql; do + echo "Applying $f..." + sed '/^-->/d' "$f" | psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" +done +echo "All migrations applied." diff --git a/fresh.gen.ts b/fresh.gen.ts index eeb5302..2309f78 100644 --- a/fresh.gen.ts +++ b/fresh.gen.ts @@ -4,18 +4,47 @@ import * as $_apps_layout from "./routes/(apps)/_layout.tsx"; import * as $_apps_middleware from "./routes/(apps)/_middleware.ts"; +import * as $_apps_admin_api_enseignements from "./routes/(apps)/admin/api/enseignements.ts"; +import * as $_apps_admin_api_enseignements_idProf_idModule_idPromo_ from "./routes/(apps)/admin/api/enseignements/[idProf]/[idModule]/[idPromo].ts"; +import * as $_apps_admin_api_example from "./routes/(apps)/admin/api/example.ts"; +import * as $_apps_admin_api_modules from "./routes/(apps)/admin/api/modules.ts"; +import * as $_apps_admin_api_modules_idModule_ from "./routes/(apps)/admin/api/modules/[idModule].ts"; +import * as $_apps_admin_api_permissions from "./routes/(apps)/admin/api/permissions.ts"; +import * as $_apps_admin_api_roles from "./routes/(apps)/admin/api/roles.ts"; +import * as $_apps_admin_api_roles_idRole_ from "./routes/(apps)/admin/api/roles/[idRole].ts"; +import * as $_apps_admin_api_users from "./routes/(apps)/admin/api/users.ts"; +import * as $_apps_admin_api_users_id_ from "./routes/(apps)/admin/api/users/[id].ts"; +import * as $_apps_admin_index from "./routes/(apps)/admin/index.tsx"; +import * as $_apps_admin_partials_index from "./routes/(apps)/admin/partials/index.tsx"; +import * as $_apps_admin_partials_modules from "./routes/(apps)/admin/partials/modules.tsx"; +import * as $_apps_admin_partials_roles from "./routes/(apps)/admin/partials/roles.tsx"; +import * as $_apps_admin_partials_users from "./routes/(apps)/admin/partials/users.tsx"; import * as $_apps_mobility_api_insert_mobility from "./routes/(apps)/mobility/api/insert_mobility.ts"; import * as $_apps_mobility_index from "./routes/(apps)/mobility/index.tsx"; import * as $_apps_mobility_partials_admin_edit_mobility from "./routes/(apps)/mobility/partials/(admin)/edit_mobility.tsx"; import * as $_apps_mobility_partials_index from "./routes/(apps)/mobility/partials/index.tsx"; import * as $_apps_mobility_partials_overview from "./routes/(apps)/mobility/partials/overview.tsx"; +import * as $_apps_notes_api_ajustements from "./routes/(apps)/notes/api/ajustements.ts"; +import * as $_apps_notes_api_ajustements_numEtud_idUE_ from "./routes/(apps)/notes/api/ajustements/[numEtud]/[idUE].ts"; +import * as $_apps_notes_api_notes from "./routes/(apps)/notes/api/notes.ts"; +import * as $_apps_notes_api_notes_numEtud_idModule_ from "./routes/(apps)/notes/api/notes/[numEtud]/[idModule].ts"; +import * as $_apps_notes_api_ue_modules from "./routes/(apps)/notes/api/ue-modules.ts"; +import * as $_apps_notes_api_ue_modules_idModule_idUE_idPromo_ from "./routes/(apps)/notes/api/ue-modules/[idModule]/[idUE]/[idPromo].ts"; +import * as $_apps_notes_api_ues from "./routes/(apps)/notes/api/ues.ts"; +import * as $_apps_notes_api_ues_idUE_ from "./routes/(apps)/notes/api/ues/[idUE].ts"; import * as $_apps_notes_index from "./routes/(apps)/notes/index.tsx"; import * as $_apps_notes_partials_admin_courses from "./routes/(apps)/notes/partials/(admin)/courses.tsx"; +import * as $_apps_notes_partials_admin_ues from "./routes/(apps)/notes/partials/(admin)/ues.tsx"; import * as $_apps_notes_partials_index from "./routes/(apps)/notes/partials/index.tsx"; import * as $_apps_notes_partials_notes from "./routes/(apps)/notes/partials/notes.tsx"; +import * as $_apps_students_api_promotions from "./routes/(apps)/students/api/promotions.ts"; +import * as $_apps_students_api_promotions_idPromo_ from "./routes/(apps)/students/api/promotions/[idPromo].ts"; import * as $_apps_students_api_students from "./routes/(apps)/students/api/students.ts"; +import * as $_apps_students_api_students_numEtud_ from "./routes/(apps)/students/api/students/[numEtud].ts"; +import * as $_apps_students_api_students_import_csv from "./routes/(apps)/students/api/students/import-csv.ts"; import * as $_apps_students_index from "./routes/(apps)/students/index.tsx"; import * as $_apps_students_partials_admin_consult from "./routes/(apps)/students/partials/(admin)/consult.tsx"; +import * as $_apps_students_partials_admin_promotions from "./routes/(apps)/students/partials/(admin)/promotions.tsx"; import * as $_apps_students_partials_admin_upload from "./routes/(apps)/students/partials/(admin)/upload.tsx"; import * as $_apps_students_partials_index from "./routes/(apps)/students/partials/index.tsx"; import * as $_apps_students_types_d from "./routes/(apps)/students/types.d.ts"; @@ -24,14 +53,22 @@ import * as $_app from "./routes/_app.tsx"; import * as $_middleware from "./routes/_middleware.ts"; import * as $about from "./routes/about.tsx"; import * as $apps from "./routes/apps.tsx"; +import * as $dev_login from "./routes/dev-login.ts"; import * as $index from "./routes/index.tsx"; import * as $login from "./routes/login.tsx"; import * as $logout from "./routes/logout.tsx"; import * as $_islands_AppNavigator from "./routes/(_islands)/AppNavigator.tsx"; import * as $_islands_Navbar from "./routes/(_islands)/Navbar.tsx"; +import * as $_apps_admin_islands_AdminModules from "./routes/(apps)/admin/(_islands)/AdminModules.tsx"; +import * as $_apps_admin_islands_AdminRoles from "./routes/(apps)/admin/(_islands)/AdminRoles.tsx"; +import * as $_apps_admin_islands_AdminUsers from "./routes/(apps)/admin/(_islands)/AdminUsers.tsx"; import * as $_apps_mobility_islands_ConsultMobility from "./routes/(apps)/mobility/(_islands)/ConsultMobility.tsx"; import * as $_apps_mobility_islands_EditMobility from "./routes/(apps)/mobility/(_islands)/EditMobility.tsx"; import * as $_apps_mobility_islands_ImportFile from "./routes/(apps)/mobility/(_islands)/ImportFile.tsx"; +import * as $_apps_notes_islands_AdminConsultNotes from "./routes/(apps)/notes/(_islands)/AdminConsultNotes.tsx"; +import * as $_apps_notes_islands_AdminUEs from "./routes/(apps)/notes/(_islands)/AdminUEs.tsx"; +import * as $_apps_notes_islands_NotesView from "./routes/(apps)/notes/(_islands)/NotesView.tsx"; +import * as $_apps_students_islands_AdminPromotions from "./routes/(apps)/students/(_islands)/AdminPromotions.tsx"; import * as $_apps_students_islands_ConsultStudents from "./routes/(apps)/students/(_islands)/ConsultStudents.tsx"; import * as $_apps_students_islands_EditStudents from "./routes/(apps)/students/(_islands)/EditStudents.tsx"; import * as $_apps_students_islands_UploadStudents from "./routes/(apps)/students/(_islands)/UploadStudents.tsx"; @@ -41,6 +78,25 @@ const manifest = { routes: { "./routes/(apps)/_layout.tsx": $_apps_layout, "./routes/(apps)/_middleware.ts": $_apps_middleware, + "./routes/(apps)/admin/api/enseignements.ts": + $_apps_admin_api_enseignements, + "./routes/(apps)/admin/api/enseignements/[idProf]/[idModule]/[idPromo].ts": + $_apps_admin_api_enseignements_idProf_idModule_idPromo_, + "./routes/(apps)/admin/api/example.ts": $_apps_admin_api_example, + "./routes/(apps)/admin/api/modules.ts": $_apps_admin_api_modules, + "./routes/(apps)/admin/api/modules/[idModule].ts": + $_apps_admin_api_modules_idModule_, + "./routes/(apps)/admin/api/permissions.ts": $_apps_admin_api_permissions, + "./routes/(apps)/admin/api/roles.ts": $_apps_admin_api_roles, + "./routes/(apps)/admin/api/roles/[idRole].ts": + $_apps_admin_api_roles_idRole_, + "./routes/(apps)/admin/api/users.ts": $_apps_admin_api_users, + "./routes/(apps)/admin/api/users/[id].ts": $_apps_admin_api_users_id_, + "./routes/(apps)/admin/index.tsx": $_apps_admin_index, + "./routes/(apps)/admin/partials/index.tsx": $_apps_admin_partials_index, + "./routes/(apps)/admin/partials/modules.tsx": $_apps_admin_partials_modules, + "./routes/(apps)/admin/partials/roles.tsx": $_apps_admin_partials_roles, + "./routes/(apps)/admin/partials/users.tsx": $_apps_admin_partials_users, "./routes/(apps)/mobility/api/insert_mobility.ts": $_apps_mobility_api_insert_mobility, "./routes/(apps)/mobility/index.tsx": $_apps_mobility_index, @@ -50,15 +106,38 @@ const manifest = { $_apps_mobility_partials_index, "./routes/(apps)/mobility/partials/overview.tsx": $_apps_mobility_partials_overview, + "./routes/(apps)/notes/api/ajustements.ts": $_apps_notes_api_ajustements, + "./routes/(apps)/notes/api/ajustements/[numEtud]/[idUE].ts": + $_apps_notes_api_ajustements_numEtud_idUE_, + "./routes/(apps)/notes/api/notes.ts": $_apps_notes_api_notes, + "./routes/(apps)/notes/api/notes/[numEtud]/[idModule].ts": + $_apps_notes_api_notes_numEtud_idModule_, + "./routes/(apps)/notes/api/ue-modules.ts": $_apps_notes_api_ue_modules, + "./routes/(apps)/notes/api/ue-modules/[idModule]/[idUE]/[idPromo].ts": + $_apps_notes_api_ue_modules_idModule_idUE_idPromo_, + "./routes/(apps)/notes/api/ues.ts": $_apps_notes_api_ues, + "./routes/(apps)/notes/api/ues/[idUE].ts": $_apps_notes_api_ues_idUE_, "./routes/(apps)/notes/index.tsx": $_apps_notes_index, "./routes/(apps)/notes/partials/(admin)/courses.tsx": $_apps_notes_partials_admin_courses, + "./routes/(apps)/notes/partials/(admin)/ues.tsx": + $_apps_notes_partials_admin_ues, "./routes/(apps)/notes/partials/index.tsx": $_apps_notes_partials_index, "./routes/(apps)/notes/partials/notes.tsx": $_apps_notes_partials_notes, + "./routes/(apps)/students/api/promotions.ts": + $_apps_students_api_promotions, + "./routes/(apps)/students/api/promotions/[idPromo].ts": + $_apps_students_api_promotions_idPromo_, "./routes/(apps)/students/api/students.ts": $_apps_students_api_students, + "./routes/(apps)/students/api/students/[numEtud].ts": + $_apps_students_api_students_numEtud_, + "./routes/(apps)/students/api/students/import-csv.ts": + $_apps_students_api_students_import_csv, "./routes/(apps)/students/index.tsx": $_apps_students_index, "./routes/(apps)/students/partials/(admin)/consult.tsx": $_apps_students_partials_admin_consult, + "./routes/(apps)/students/partials/(admin)/promotions.tsx": + $_apps_students_partials_admin_promotions, "./routes/(apps)/students/partials/(admin)/upload.tsx": $_apps_students_partials_admin_upload, "./routes/(apps)/students/partials/index.tsx": @@ -69,6 +148,7 @@ const manifest = { "./routes/_middleware.ts": $_middleware, "./routes/about.tsx": $about, "./routes/apps.tsx": $apps, + "./routes/dev-login.ts": $dev_login, "./routes/index.tsx": $index, "./routes/login.tsx": $login, "./routes/logout.tsx": $logout, @@ -76,12 +156,26 @@ const manifest = { islands: { "./routes/(_islands)/AppNavigator.tsx": $_islands_AppNavigator, "./routes/(_islands)/Navbar.tsx": $_islands_Navbar, + "./routes/(apps)/admin/(_islands)/AdminModules.tsx": + $_apps_admin_islands_AdminModules, + "./routes/(apps)/admin/(_islands)/AdminRoles.tsx": + $_apps_admin_islands_AdminRoles, + "./routes/(apps)/admin/(_islands)/AdminUsers.tsx": + $_apps_admin_islands_AdminUsers, "./routes/(apps)/mobility/(_islands)/ConsultMobility.tsx": $_apps_mobility_islands_ConsultMobility, "./routes/(apps)/mobility/(_islands)/EditMobility.tsx": $_apps_mobility_islands_EditMobility, "./routes/(apps)/mobility/(_islands)/ImportFile.tsx": $_apps_mobility_islands_ImportFile, + "./routes/(apps)/notes/(_islands)/AdminConsultNotes.tsx": + $_apps_notes_islands_AdminConsultNotes, + "./routes/(apps)/notes/(_islands)/AdminUEs.tsx": + $_apps_notes_islands_AdminUEs, + "./routes/(apps)/notes/(_islands)/NotesView.tsx": + $_apps_notes_islands_NotesView, + "./routes/(apps)/students/(_islands)/AdminPromotions.tsx": + $_apps_students_islands_AdminPromotions, "./routes/(apps)/students/(_islands)/ConsultStudents.tsx": $_apps_students_islands_ConsultStudents, "./routes/(apps)/students/(_islands)/EditStudents.tsx":