From 762a2058d3b959981132cc0b6491dbbf74f6da16 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Mon, 14 Oct 2024 12:33:09 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20pg=20sql=E8=87=AA=E5=8A=A8=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +- .../ui/certd-server/.env.development.yaml | 14 +---- packages/ui/certd-server/.env.pgpl.yaml | 21 ++++++++ packages/ui/certd-server/.gitignore | 2 + .../db/migration-pg/v10010__plugin.sql | 18 +++++++ packages/ui/certd-server/db/transform.js | 53 +++++++++++++++++++ packages/ui/certd-server/package.json | 3 +- 7 files changed, 99 insertions(+), 15 deletions(-) create mode 100644 packages/ui/certd-server/.env.pgpl.yaml create mode 100644 packages/ui/certd-server/db/migration-pg/v10010__plugin.sql create mode 100644 packages/ui/certd-server/db/transform.js diff --git a/package.json b/package.json index 798fcc195..f62029306 100644 --- a/package.json +++ b/package.json @@ -14,11 +14,12 @@ "i-all": "lerna link && lerna exec npm install ", "publish": "npm run prepublishOnly2 && lerna publish --force-publish=pro/plus-core --conventional-commits --create-release github && npm run afterpublishOnly && npm run commitAll", "afterpublishOnly": "time /t >build.trigger && git add ./build.trigger && git commit -m \"build: trigger build image\" && TIMEOUT /T 10 && git push", + "transform-sql":"cd ./packages/ui/certd-server/db/ && node --experimental-json-modules transform.js", "commitAll": "git add . && git commit -m \"build: publish\" && git push && npm run commitPro", "commitPro": "cd ./packages/core/ && git add . && git commit -m \"build: publish\" && git push", "prepublishOnly1": "npm run check && lerna run build ", "prepublishOnly2": "npm run check && npm run before-build && lerna run build ", - "before-build": "cd ./packages/core/basic && time /t >build.md && git add ./build.md && git commit -m \"build: prepare to build\"", + "before-build": "npm run transform-sql && cd ./packages/core/basic && time /t >build.md && git add ./build.md && git commit -m \"build: prepare to build\"", "deploy1": "node --experimental-json-modules deploy.js ", "check": "node --experimental-json-modules publish-check.js", "init": "lerna run build" diff --git a/packages/ui/certd-server/.env.development.yaml b/packages/ui/certd-server/.env.development.yaml index d9ce77938..2ecb46359 100644 --- a/packages/ui/certd-server/.env.development.yaml +++ b/packages/ui/certd-server/.env.development.yaml @@ -4,23 +4,11 @@ # server: # baseUrl: 'http://127.0.0.1:11007' -#flyway: -# scriptDir: './db/migration-pg' #typeorm: # dataSource: # default: -# type: postgres -# host: localhost -# port: 5433 -# username: postgres -# password: root -# database: postgres - -typeorm: - dataSource: - default: - database: './data/db.sqlite' +# database: './data/db.sqlite' plus: server: baseUrls: ['https://api.ai.handsfree.work', 'https://api.ai.docmirror.cn'] diff --git a/packages/ui/certd-server/.env.pgpl.yaml b/packages/ui/certd-server/.env.pgpl.yaml new file mode 100644 index 000000000..54c84e56c --- /dev/null +++ b/packages/ui/certd-server/.env.pgpl.yaml @@ -0,0 +1,21 @@ +flyway: + scriptDir: './db/migration-pg' + + +typeorm: + dataSource: + default: + type: postgres + host: 192.168.42.245 + port: 5432 + username: root + password: Baode@1234567 + database: certd + +#plus: +# server: +# baseUrl: 'https://api.ai.handsfree.work' + +plus: + server: + baseUrl: 'http://127.0.0.1:11007' diff --git a/packages/ui/certd-server/.gitignore b/packages/ui/certd-server/.gitignore index 9d5482afa..31f7870e5 100755 --- a/packages/ui/certd-server/.gitignore +++ b/packages/ui/certd-server/.gitignore @@ -17,3 +17,5 @@ run/ /test/setup.ts /data/ .clinic + +.env.pgpl.yaml diff --git a/packages/ui/certd-server/db/migration-pg/v10010__plugin.sql b/packages/ui/certd-server/db/migration-pg/v10010__plugin.sql new file mode 100644 index 000000000..9003f09a6 --- /dev/null +++ b/packages/ui/certd-server/db/migration-pg/v10010__plugin.sql @@ -0,0 +1,18 @@ +CREATE TABLE "pi_plugin" +( + "id" bigint NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, + "name" varchar(100) NOT NULL, + "icon" varchar(100), + "title" varchar(200), + "desc" varchar(500), + "group" varchar(100), + "version" varchar(100), + "setting" text, + "sys_setting" text, + "content" text, + "type" varchar(100) NOT NULL, + "disabled" boolean NOT NULL, + "create_time" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP), + "update_time" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP) +); + diff --git a/packages/ui/certd-server/db/transform.js b/packages/ui/certd-server/db/transform.js new file mode 100644 index 000000000..2a39b8553 --- /dev/null +++ b/packages/ui/certd-server/db/transform.js @@ -0,0 +1,53 @@ +import fs from 'fs'; +/** + * ## sqlite与postgres不同点 + * 1. + * sqlite: AUTOINCREAMENT + * postgresql: GENERATED BY DEFAULT AS IDENTITY + * + * 2. + * sqlite: datetime + * postgresql: timestamp + * + * 3. + * sqlite: update sqlite_sequence set seq = 1000 where name = 'sys_role' ; + * postgresql: select setval('sys_role_id_seq', 1000); + * + * 4. + * sqlite: "disabled" boolean DEFAULT (0) + * postgresql: "disabled" boolean DEFAULT (false) + * + * 5. + * sqlite: last_insert_rowid() + * postgresql: LASTVAL() + * + * 6. + * sqlite: integer + * postgresql: bigint + */ +function transform() { + // 读取文件列表 + const sqliteFiles = fs.readdirSync('./migration/'); + const pgFiles = fs.readdirSync('./migration-pg'); + //找出pg里面没有的文件 + const notFiles = sqliteFiles.filter(file => !pgFiles.includes(file)); + for (const notFile of notFiles) { + //开始转换 + const sqliteSql = fs.readFileSync(`./migration/${notFile}`, 'utf-8'); + let pgSql = sqliteSql.replace(/AUTOINCREMENT/g, 'GENERATED BY DEFAULT AS IDENTITY'); + pgSql = pgSql.replace(/datetime/g, 'timestamp'); + pgSql = pgSql.replace(/boolean DEFAULT \(0\)/g, 'boolean DEFAULT (false)'); + pgSql = pgSql.replace(/integer/g, 'bigint'); + pgSql = pgSql.replace(/last_insert_rowid\(\)/g, 'LASTVAL()'); + fs.writeFileSync(`./migration-pg/${notFile}`, pgSql); + } + + if (notFiles.length > 0) { + console.log('sqlite->pg 转换完成'); + + throw new Error('sqlite->pg 转换完成,有更新,需要测试pg'); + } else { + console.log('sql无需更新'); + } +} +transform(); diff --git a/packages/ui/certd-server/package.json b/packages/ui/certd-server/package.json index 9161b29c9..848053469 100644 --- a/packages/ui/certd-server/package.json +++ b/packages/ui/certd-server/package.json @@ -10,6 +10,7 @@ "commdev": "cross-env NODE_ENV=commdev mwtsc --watch --run @midwayjs/mock/app", "commpro": "cross-env NODE_ENV=commpro mwtsc --watch --run @midwayjs/mock/app", "pgdev": "cross-env NODE_ENV=pgdev mwtsc --watch --run @midwayjs/mock/app", + "pgpl": "cross-env NODE_ENV=pgpl mwtsc --watch --run @midwayjs/mock/app", "dev-new": "npm run rm-db-new && cross-env NODE_ENV=local mwtsc --watch --run @midwayjs/mock/app", "rm-db-new": "rimraf ./data/db-new.sqlite", "test": "cross-env NODE_ENV=unittest mocha", @@ -21,7 +22,7 @@ "dev-build": "echo 1", "build-on-docker": "node ./before-build.js && npm run build", "up-mw-deps": "npx midway-version -u -w", - "heap": "clinic heapprofiler -- node ./bootstrap.js", + "heap": "cross-env NODE_ENV=pgpl clinic heapprofiler -- node ./bootstrap.js", "flame": "clinic flame -- node ./bootstrap.js" }, "dependencies": {