1ebff25603180d34c6f6ea7ab74c448874688111
Review of Task 1 (d86245a) found two issues:
1. prisma/schema.prisma didn't reproduce db/schema.sql's DDL exactly.
Add @db.DateTime(0) to createdAt/updatedAt/expiresAt/cleanedAt (Prisma
otherwise defaults to DATETIME(3)), and explicit map: names on the
uuid unique constraint and status/expiresAt indexes so they match the
real table's uniq_uuid/idx_status/idx_expires_at. Verified via
`prisma migrate diff --from-empty --to-schema-datamodel`, which now
shows DATETIME(0)/CURRENT_TIMESTAMP(0) and the correct names. Table
collation and updated_at's ON UPDATE CURRENT_TIMESTAMP remain
documented, accepted gaps with no schema-level fix in Prisma's mysql
provider.
2. The original @prisma/client@6/prisma@6 pin used --force without
diagnosing why. Reinstalled with `npm install @prisma/client@6
prisma@6 --save-dev` (no --force) directly against this project's
node_modules: it completed cleanly with no conflicts, confirming
--force was unnecessary.
`prisma validate`, `prisma generate`, and the full test suite
(69 passed, 4 pre-existing failures unrelated to this change) all pass.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
File Converter
Local development
- Copy
.env.exampleto.envand fill in your local MariaDB credentials. - Apply the schema:
mysql -h <host> -u <user> -p <database> < db/schema.sql - Install dependencies:
npm install - Run the API:
npm start - Run the worker (separate terminal):
npm run worker - Run tests:
npm test(requires the same MariaDB reachable via your.envvars, exported into the shell)
Deployment on o2switch
- Upload the project (excluding
node_modules/) via SSH/Git. - Create/adjust
.envon the server with production values (STORAGE_DIRpointing to a writable path under your account, MariaDB credentials from cPanel). - Apply
db/schema.sqlto the MariaDB database created in cPanel. npm install(never with--ignore-scripts— Puppeteer needs its postinstall step to download Chromium).- Configure the app in cPanel "Setup Node.js App", pointing its entry point at
src/server.js. Passenger manages this process (start/stop/restart). - Start the worker independently of Passenger, over SSH:
./node_modules/.bin/pm2 start ecosystem.config.cjs, thenpm2 save. Trypm2 startupto survive a server reboot; if that's not permitted without root on this account, fall back to a cPanel cron job every 5 minutes that runspm2 resurrect(or checkspm2 listand restarts the app if absent) — validate which option this hosting plan actually allows once connected over SSH. - Add a cPanel cron job to run the cleanup script periodically, e.g. every 15 minutes:
*/15 * * * * cd /home/gaan6043/convert.ombrora.com-node && /home/gaan6043/nodevenv/convert.ombrora.com-node/24/bin/node src/cleanup.js > /dev/null(adjust the path and node binary location to match your actual account — check withwhich nodeover SSH). - On every subsequent deployment: pull changes,
npm install,npm run build(frontend), then restart the Passenger app from cPanel andpm2 restart convert-worker.
Languages
JavaScript
92.9%
CSS
5.8%
HTML
0.9%
Shell
0.4%