0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2024-12-30 22:03:56 -05:00

wip: db action

This commit is contained in:
Nate Moore 2024-01-25 16:41:11 -06:00
parent f66b9df1c2
commit ff0dca3b6f
3 changed files with 53 additions and 8 deletions

View file

@ -47,6 +47,7 @@
"test:match": "mocha --timeout 20000 -g"
},
"dependencies": {
"@actions/core": "^1.10.1",
"@libsql/client": "0.4.0-pre.5",
"deep-diff": "^1.0.2",
"drizzle-orm": "^0.28.6",
@ -57,12 +58,12 @@
"zod": "^3.22.4"
},
"devDependencies": {
"@types/chai": "^4.3.6",
"@types/deep-diff": "^1.0.5",
"@types/diff": "^5.0.8",
"@types/yargs-parser": "^21.0.3",
"@types/chai": "^4.3.6",
"@types/mocha": "^10.0.2",
"@types/prompts": "^2.4.8",
"@types/yargs-parser": "^21.0.3",
"astro": "workspace:*",
"astro-scripts": "workspace:*",
"chai": "^4.3.10",

View file

@ -5,9 +5,13 @@ import { getMigrations, initializeFromMigrations } from '../../../migrations.js'
const { diff } = deepDiff;
export async function cmd({ config }: { config: AstroConfig; flags: Arguments }) {
const core = await isGithubActions();
const currentSnapshot = JSON.parse(JSON.stringify(config.db?.collections ?? {}));
const allMigrationFiles = await getMigrations();
if (allMigrationFiles.length === 0) {
if (core) {
core.setFailed(`Project not yet initialized!`);
}
console.log('Project not yet initialized!');
process.exit(1);
}
@ -15,9 +19,25 @@ export async function cmd({ config }: { config: AstroConfig; flags: Arguments })
const prevSnapshot = await initializeFromMigrations(allMigrationFiles);
const calculatedDiff = diff(prevSnapshot, currentSnapshot);
if (calculatedDiff) {
if (core) {
core.setFailed(`Schema changes detected!`);
process.exit(1);
}
console.log('Changes detected!');
process.exit(1);
}
if (core) {
core.info('No changes detected!');
}
console.log('No changes detected.');
return;
}
async function isGithubActions(): Promise<typeof import('@actions/core') | undefined> {
if (process.env['GITHUB_ACTIONS'] === 'true') {
return import('@actions/core').then(res => res.default)
}
return undefined;
}

View file

@ -3790,6 +3790,9 @@ importers:
packages/db:
dependencies:
'@actions/core':
specifier: ^1.10.1
version: 1.10.1
'@libsql/client':
specifier: 0.4.0-pre.5
version: 0.4.0-pre.5
@ -3907,7 +3910,7 @@ importers:
version: 1.6.17
preact:
specifier: ^10.6.5
version: 10.19.2
version: 10.19.3
simple-stack-form:
specifier: ^0.1.10
version: 0.1.10(astro@packages+astro)(zod@3.22.4)
@ -5413,6 +5416,20 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
/@actions/core@1.10.1:
resolution: {integrity: sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==}
dependencies:
'@actions/http-client': 2.2.0
uuid: 8.3.2
dev: false
/@actions/http-client@2.2.0:
resolution: {integrity: sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==}
dependencies:
tunnel: 0.0.6
undici: 5.28.2
dev: false
/@alloc/quick-lru@5.2.0:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
@ -7055,7 +7072,6 @@ packages:
/@fastify/busboy@2.1.0:
resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==}
engines: {node: '>=14'}
dev: true
/@fontsource/monofett@5.0.17:
resolution: {integrity: sha512-MTSxMPkTXeqEVeaugMh9nUbSqL/0tm0KlwdTInRv3s1JY3S7rzM1hnue+m8p1ZU89viNNjeCBTLaE77MosKdjQ==}
@ -14139,10 +14155,6 @@ packages:
preact: 10.19.3
dev: false
/preact@10.19.2:
resolution: {integrity: sha512-UA9DX/OJwv6YwP9Vn7Ti/vF80XL+YA5H2l7BpCtUr3ya8LWHFzpiO5R+N7dN16ujpIxhekRFuOOF82bXX7K/lg==}
dev: false
/preact@10.19.3:
resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==}
@ -15832,6 +15844,11 @@ packages:
safe-buffer: 5.2.1
dev: false
/tunnel@0.0.6:
resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==}
engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'}
dev: false
/turbo-darwin-64@1.11.2:
resolution: {integrity: sha512-toFmRG/adriZY3hOps7nYCfqHAS+Ci6xqgX3fbo82kkLpC6OBzcXnleSwuPqjHVAaRNhVoB83L5njcE9Qwi2og==}
cpu: [x64]
@ -16036,6 +16053,13 @@ packages:
/undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
/undici@5.28.2:
resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==}
engines: {node: '>=14.0'}
dependencies:
'@fastify/busboy': 2.1.0
dev: false
/undici@6.2.1:
resolution: {integrity: sha512-7Wa9thEM6/LMnnKtxJHlc8SrTlDmxqJecgz1iy8KlsN0/iskQXOQCuPkrZLXbElPaSw5slFFyKIKXyJ3UtbApw==}
engines: {node: '>=18.0'}