add db-migrations
Main daploy / deploy (push) Successful in 43s

This commit is contained in:
2024-11-24 23:52:52 +02:00
parent e8dce0cf5e
commit f1eb121b5e
8 changed files with 189 additions and 3 deletions
+3
View File
@@ -16,6 +16,9 @@ export const messagesDbLocal = new PouchDB<MessageDocument>('messages')
export const webPushSubscriptionsDbRemote = new PouchDB<WebPushSubscriptionDocument>(
`${import.meta.env.VITE_API_URL}/web_push_subscriptions`,
{
skip_setup: true,
},
)
export const messagesDbRemote = new PouchDB<MessageDocument>(
+111 -3
View File
@@ -1182,6 +1182,10 @@
"vue": "^3.3.4"
}
},
"node_modules/@hereconnect/db-migrations": {
"resolved": "services/db-migrations",
"link": true
},
"node_modules/@hereconnect/frontend": {
"resolved": "apps/frontend",
"link": true
@@ -3139,7 +3143,6 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -3437,6 +3440,15 @@
"node": ">=18"
}
},
"node_modules/dateformat": {
"version": "4.6.3",
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
"integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==",
"license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/de-indent": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
@@ -3611,6 +3623,18 @@
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/dotenv": {
"version": "16.4.5",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
"integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://dotenvx.com"
}
},
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -4473,7 +4497,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -5285,6 +5308,39 @@
"integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==",
"license": "MIT"
},
"node_modules/migrate": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/migrate/-/migrate-2.1.0.tgz",
"integrity": "sha512-xSwTScy7ozxQtzDtO/LpmZzWTmItXBC3k3wOQGf8TjHpudQUS/m7uyboBHHsv2nFmioyyC7gtbcI7IPj89aJLA==",
"license": "MIT",
"dependencies": {
"chalk": "^4.1.2",
"commander": "^2.20.3",
"dateformat": "^4.6.3",
"dotenv": "^16.0.0",
"inherits": "^2.0.3",
"minimatch": "^9.0.1",
"mkdirp": "^3.0.1",
"slug": "^8.2.2"
},
"bin": {
"migrate": "bin/migrate",
"migrate-create": "bin/migrate-create",
"migrate-down": "bin/migrate-down",
"migrate-init": "bin/migrate-init",
"migrate-list": "bin/migrate-list",
"migrate-up": "bin/migrate-up"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/migrate/node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"license": "MIT"
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
@@ -5367,6 +5423,21 @@
"dev": true,
"license": "MIT"
},
"node_modules/mkdirp": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
"integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
"license": "MIT",
"bin": {
"mkdirp": "dist/cjs/src/bin.js"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/mlly": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.3.tgz",
@@ -6871,6 +6942,15 @@
"node": ">=18"
}
},
"node_modules/slug": {
"version": "8.2.3",
"resolved": "https://registry.npmjs.org/slug/-/slug-8.2.3.tgz",
"integrity": "sha512-fXjhAZszNecz855GUNIwW0+sFPi9WV4bMiEKDOCA4wcq1ts1UnUVNy/F78B0Aat7/W3rA+se//33ILKNMrbeYQ==",
"license": "MIT",
"bin": {
"slug": "cli.js"
}
},
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -7080,7 +7160,6 @@
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -8370,6 +8449,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"services/db-migrations": {
"name": "@hereconnect/db-migrations",
"version": "1.0.0",
"license": "@hereconnect",
"dependencies": {
"migrate": "^2.1.0",
"pouchdb-adapter-http": "^9.0.0",
"pouchdb-core": "^9.0.0",
"pouchdb-fetch": "^9.0.0",
"pouchdb-find": "^9.0.0"
},
"engines": {
"node": ">=v20.10.0",
"pnpm": ">=8.15.0"
}
},
"services/message-delivery-method-web-push": {
"name": "@hereconnect/message-delivery-method-web-push",
"version": "1.0.0",
@@ -8383,6 +8478,19 @@
"node": ">=v20.10.0",
"pnpm": ">=8.15.0"
}
},
"services/migrations": {
"name": "@hereconnect/migrations",
"version": "1.0.0",
"extraneous": true,
"license": "@hereconnect",
"dependencies": {
"migrate": "^2.1.0"
},
"engines": {
"node": ">=v20.10.0",
"pnpm": ">=8.15.0"
}
}
}
}
+2
View File
@@ -0,0 +1,2 @@
[chttpd_auth]
timeout = 315362081
+1
View File
@@ -0,0 +1 @@
.migrate
+5
View File
@@ -0,0 +1,5 @@
import PouchDB from "pouchdb-core";
import PouchDBAdapterHttp from "pouchdb-adapter-http";
import PouchdbFind from "pouchdb-find";
export default PouchDB.plugin(PouchDBAdapterHttp).plugin(PouchdbFind);
@@ -0,0 +1,40 @@
import { fetch } from "pouchdb-fetch";
const dbsSecurity = {
web_push_subscriptions: {
admins: { roles: ["_admin"] },
members: { roles: [] },
},
messages: {
admins: { roles: ["_admin"] },
members: { roles: [] },
},
server_settings: {
admins: { roles: ["_admin"] },
members: { roles: ["_admin"] },
},
// qr: {
// admins: { roles: ["_admin"] },
// members: { roles: [] },
// },
};
export const up = async () => {
for (const [dbName, dbSecurity] of Object.entries(dbsSecurity)) {
await fetch(`${process.env.API_URL}/${dbName}`, {
method: "PUT",
});
await fetch(`${process.env.API_URL}/${dbName}/_security`, {
method: "PUT",
body: JSON.stringify(dbSecurity),
});
}
};
export const down = async () => {
for (const dbName of Object.keys(dbsSecurity)) {
await fetch(`${process.env.API_URL}/${dbName}`, {
method: "DELETE",
});
}
};
@@ -0,0 +1,9 @@
import PouchDB from "../PouchDB.js";
export const up = async () => {
await new PouchDB(`${process.env.API_URL}/`, { skip_setup: true });
};
export const down = async () => {
await new PouchDB(`${process.env.API_URL}/`, { skip_setup: true });
};
+18
View File
@@ -0,0 +1,18 @@
{
"name": "@hereconnect/db-migrations",
"version": "1.0.0",
"type": "module",
"license": "@hereconnect",
"private": true,
"engines": {
"node": ">=v20.10.0",
"pnpm": ">=8.15.0"
},
"dependencies": {
"migrate": "^2.1.0",
"pouchdb-adapter-http": "^9.0.0",
"pouchdb-core": "^9.0.0",
"pouchdb-fetch": "^9.0.0",
"pouchdb-find": "^9.0.0"
}
}