Skip to content

Commit 0a4c482

Browse files
rajbosCopilot
andcommitted
feat: add clean-db script to remove database files safely
Co-authored-by: Copilot <copilot@github.com>
1 parent 04b8ccb commit 0a4c482

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

sharing-server/clean-db.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
const { rmSync, existsSync } = require('fs');
2+
const net = require('net');
3+
4+
const port = parseInt(process.env.PORT ?? '3000', 10);
5+
6+
function isServerRunning(port) {
7+
return new Promise((resolve) => {
8+
const socket = new net.Socket();
9+
socket.setTimeout(500);
10+
socket.on('connect', () => { socket.destroy(); resolve(true); });
11+
socket.on('error', () => resolve(false));
12+
socket.on('timeout', () => { socket.destroy(); resolve(false); });
13+
socket.connect(port, '127.0.0.1');
14+
});
15+
}
16+
17+
async function main() {
18+
if (await isServerRunning(port)) {
19+
console.error(`Error: the sharing server is still running on port ${port}.`);
20+
console.error('Stop it first, then re-run npm run clean:db.');
21+
process.exit(1);
22+
}
23+
24+
const files = ['./data/sharing.db', './data/sharing.db-shm', './data/sharing.db-wal'];
25+
files.forEach(f => {
26+
if (existsSync(f)) {
27+
try {
28+
rmSync(f);
29+
console.log('Removed ' + f);
30+
} catch (err) {
31+
if (err.code === 'EPERM' || err.code === 'EBUSY') {
32+
console.error(`Cannot remove ${f} — the file is locked.`);
33+
process.exit(1);
34+
}
35+
throw err;
36+
}
37+
}
38+
});
39+
console.log('Done.');
40+
}
41+
42+
main();

sharing-server/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
"build:production": "node esbuild.js --production",
1515
"start": "node --env-file=.env dist/server.js",
1616
"dev": "node --env-file=.env --watch dist/server.js",
17+
"serve": "node esbuild.js && node --env-file=.env --watch dist/server.js",
18+
"clean:db": "node clean-db.js",
1719
"update": "npm ci && node esbuild.js",
1820
"check-types": "tsc --noEmit"
1921
},

0 commit comments

Comments
 (0)