From a9df2e9807972a8f8503c164bf200eb94071c147 Mon Sep 17 00:00:00 2001 From: Bruno Perel Date: Sun, 18 Aug 2024 21:42:35 +0200 Subject: [PATCH] stats-updater: Fix Dockerfile --- .github/workflows/deploy-stats-updater.yml | 6 +-- apps/stats-updater/.env | 2 + apps/stats-updater/.env.prod | 9 ---- apps/stats-updater/docker-compose.yml | 6 +-- apps/stats-updater/index.ts | 50 ++++++++++------------ 5 files changed, 29 insertions(+), 44 deletions(-) delete mode 100644 apps/stats-updater/.env.prod diff --git a/.github/workflows/deploy-stats-updater.yml b/.github/workflows/deploy-stats-updater.yml index 34d05e8ee..4baf5100a 100644 --- a/.github/workflows/deploy-stats-updater.yml +++ b/.github/workflows/deploy-stats-updater.yml @@ -46,11 +46,11 @@ jobs: fingerprint: ${{ secrets.PRODUCTION_SSH_FINGERPRINT }} username: ${{ secrets.PRODUCTION_SSH_USER }} key: ${{ secrets.PRODUCTION_SSH_KEY }} - source: /home/bperel/workspace/DucksManager2/packages/api/.env.prod.local - target: .env + source: /home/bperel/workspace/DucksManager2/apps/stats-updater/.env.prod.local + target: apps/stats-updater/.env - name: Build stats-updater bundle - run: . .env && DATABASE_URL_DM_STATS=$DATABASE_URL_DM_STATS pnpm build:stats-updater + run: pnpm build:stats-updater - name: Build and push stats-updater uses: docker/build-push-action@v5 diff --git a/apps/stats-updater/.env b/apps/stats-updater/.env index 631d863a6..3b3838e11 100644 --- a/apps/stats-updater/.env +++ b/apps/stats-updater/.env @@ -6,4 +6,6 @@ MYSQL_DM_DATABASE=dm MYSQL_DM_STATS_DATABASE=dm_stats MYSQL_COA_DATABASE=coa +DATABASE_URL_COA=mysql://root:changeme@localhost:64999/coa +DATABASE_URL_DM=mysql://root:changeme@localhost:64999/dm DATABASE_URL_DM_STATS=mysql://root:changeme@localhost:64999/dm_stats diff --git a/apps/stats-updater/.env.prod b/apps/stats-updater/.env.prod deleted file mode 100644 index 699fdc06f..000000000 --- a/apps/stats-updater/.env.prod +++ /dev/null @@ -1,9 +0,0 @@ -MYSQL_HOST=db -MYSQL_PORT=3306 -MYSQL_ROOT_PASSWORD=changeme - -MYSQL_DM_DATABASE=dm -MYSQL_DM_STATS_DATABASE=dm_stats -MYSQL_COA_DATABASE=coa - -DATABASE_URL_DM_STATS=mysql://root:changeme@db:3306/dm_stats diff --git a/apps/stats-updater/docker-compose.yml b/apps/stats-updater/docker-compose.yml index 454914756..62c030764 100644 --- a/apps/stats-updater/docker-compose.yml +++ b/apps/stats-updater/docker-compose.yml @@ -3,11 +3,7 @@ services: init: true image: ghcr.io/bperel/stats-updater env_file: - - ../../packages/api/.env.prod.local - environment: - MYSQL_DM_STATS_DATABASE: dm_stats - MYSQL_HOST: db - MYSQL_PORT: 3306 + - ./.env.prod.local networks: - dm-server_db-network - ducksmanager_dm-network diff --git a/apps/stats-updater/index.ts b/apps/stats-updater/index.ts index 32efcffc5..d976621fb 100644 --- a/apps/stats-updater/index.ts +++ b/apps/stats-updater/index.ts @@ -2,6 +2,16 @@ import "~prisma-schemas/util/groupBy"; +const originalConnectionString = process.env.DATABASE_URL_DM_STATS!; +process.env.DATABASE_URL_DM_STATS = originalConnectionString.replace( + "dm_stats", + "dm_stats_new", +); + +import { prismaClient as prismaDm } from "~prisma-schemas/schemas/dm/client" +import { prismaClient as prismaCoa } from "~prisma-schemas/schemas/coa/client" +import { prismaClient as prismaDmStats } from "~prisma-schemas/schemas/dm_stats/client" + import { type inducks_issue, type inducks_storyjob, @@ -26,21 +36,7 @@ db.connect().then(async () => { await db.runQuery(`DROP DATABASE IF EXISTS ${dbName}_new`); await db.runQuery(`CREATE DATABASE ${dbName}_new`); - const originalConnectionString = process.env.DATABASE_URL_DM_STATS!; - - process.env.DATABASE_URL_DM_STATS = originalConnectionString.replace( - "dm_stats", - "dm_stats_new", - ); - const prismaDmStatsNew = ( - await import("~prisma-schemas/schemas/dm_stats/client") - ).prismaClient; - - const prismaDm = (await import("~prisma-schemas/schemas/dm/client")) - .prismaClient; - const prismaCoa = (await import("~prisma-schemas/schemas/coa/client")) - .prismaClient; await db.runMigrations(); @@ -56,11 +52,11 @@ db.connect().then(async () => { (userId) => parseInt(userId), ); - await prismaDmStatsNew.authorUser.createMany({ + await prismaDmStats.authorUser.createMany({ data: authorUsers.map(({ id: _id, ...rest }) => rest), }); - await prismaDmStatsNew.issueSimple.createMany({ + await prismaDmStats.issueSimple.createMany({ data: await prismaDm.issue.findMany({ distinct: ["issuecode", "userId"], select: { @@ -79,7 +75,7 @@ db.connect().then(async () => { }); console.log("Creating storyIssue entries"); - await prismaDmStatsNew.storyIssue.createMany({ + await prismaDmStats.storyIssue.createMany({ data: await prismaCoa.$queryRaw< (Pick & Pick)[] @@ -95,10 +91,10 @@ db.connect().then(async () => { and sv.storycode != ''`, }); - await prismaDmStatsNew.$executeRaw`OPTIMIZE TABLE histoires_publications`; + await prismaDmStats.$executeRaw`OPTIMIZE TABLE histoires_publications`; console.log("Creating authorStory entries"); - await prismaDmStatsNew.authorStory.createMany({ + await prismaDmStats.authorStory.createMany({ data: await prismaCoa.$queryRaw< (Pick & Pick)[] @@ -112,11 +108,11 @@ db.connect().then(async () => { and sj.personcode in (${Prisma.join(personcodes)})`, }); - await prismaDmStatsNew.$executeRaw`OPTIMIZE TABLE auteurs_histoires`; + await prismaDmStats.$executeRaw`OPTIMIZE TABLE auteurs_histoires`; console.log("Creating missingStoryForUser entries"); - await prismaDmStatsNew.missingStoryForUser.createMany({ - data: await prismaDmStatsNew.$queryRaw< + await prismaDmStats.missingStoryForUser.createMany({ + data: await prismaDmStats.$queryRaw< (Pick & Pick)[] >` @@ -138,10 +134,10 @@ db.connect().then(async () => { a_h.storycode`, }); - await prismaDmStatsNew.$executeRaw`OPTIMIZE TABLE utilisateurs_histoires_manquantes`; + await prismaDmStats.$executeRaw`OPTIMIZE TABLE utilisateurs_histoires_manquantes`; console.log("Creating missingIssueForUser entries"); - await prismaDmStatsNew.$executeRaw` + await prismaDmStats.$executeRaw` insert into utilisateurs_publications_manquantes(ID_User, personcode, storycode, issuecode, oldestdate, Notation) select distinct u_h_m.ID_User AS userId, u_h_m.personcode, @@ -153,16 +149,16 @@ db.connect().then(async () => { inner join histoires_publications h_p using (storycode) inner join auteurs_pseudos a_p on a_p.ID_User = u_h_m.ID_User and u_h_m.personcode = a_p.NomAuteurAbrege`; - await prismaDmStatsNew.$executeRaw`OPTIMIZE TABLE utilisateurs_publications_manquantes`; + await prismaDmStats.$executeRaw`OPTIMIZE TABLE utilisateurs_publications_manquantes`; console.log("Creating suggestedIssueForUser entries"); - await prismaDmStatsNew.$executeRaw` + await prismaDmStats.$executeRaw` insert into utilisateurs_publications_suggerees(ID_User, issuecode, oldestdate, Score) select ID_User AS userId, issuecode, oldestdate, sum(Notation) AS score from utilisateurs_publications_manquantes group by ID_User, issuecode, oldestdate`; - await prismaDmStatsNew.$executeRaw`OPTIMIZE TABLE utilisateurs_publications_suggerees`; + await prismaDmStats.$executeRaw`OPTIMIZE TABLE utilisateurs_publications_suggerees`; console.log("Adding publicationcode and issuenumber for WTD < 3"); await db.runQuery(`