33 lines
851 B
JavaScript
33 lines
851 B
JavaScript
import pg from "pg";
|
|
import fs from "fs";
|
|
import dotenv from "dotenv";
|
|
|
|
dotenv.config();
|
|
|
|
const { Pool } = pg;
|
|
const DATABASE_URL = process.env.DATABASE_URL;
|
|
|
|
if (!DATABASE_URL) {
|
|
console.error("Missing DATABASE_URL environment variable");
|
|
process.exit(1);
|
|
}
|
|
|
|
const pool = new Pool({
|
|
connectionString: DATABASE_URL,
|
|
ssl: process.env.NODE_ENV === "production" ? { rejectUnauthorized: false } : false
|
|
});
|
|
|
|
const result = await pool.query("SELECT * FROM notes ORDER BY id ASC");
|
|
const backup = {
|
|
exportedAt: new Date().toISOString(),
|
|
table: "notes",
|
|
rows: result.rows
|
|
};
|
|
|
|
fs.mkdirSync("backups", { recursive: true });
|
|
const filename = `backups/notes-backup-${new Date().toISOString().replace(/[:.]/g, "-")}.json`;
|
|
fs.writeFileSync(filename, JSON.stringify(backup, null, 2));
|
|
console.log(`Backup written to ${filename}`);
|
|
|
|
await pool.end();
|