- Drop @supabase/supabase-js entirely; add drizzle-orm + postgres (porsager) driver - New packages/db: schema (pgSchema ordinarthur_os), client factory, migrate runner, drizzle-kit config - SQL migrations: 0000_init (pgcrypto + schema), 0001_jobs (jobs + job_search_criteria, no RLS) - Rewrite apps/api db module with DI symbols DB/DB_HANDLE + @InjectDb() decorator - Rewrite jobs.service.ts with Drizzle queries (upsert via onConflictDoUpdate, arrayOverlaps for stack filter) - Replace SUPABASE_* env vars with DATABASE_URL in env config + .env.example - Add docker-compose.yml (Postgres 16-alpine, dev only) - Add deploy/k8s/postgres.yaml (StatefulSet + PVC), migrate.job.yaml, updated secrets.template.yaml - Update all docs (README, PLAN, ARCHITECTURE, CLAUDE.md, AGENTS.md, packages/db/README.md) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
31 lines
1019 B
YAML
31 lines
1019 B
YAML
# Backup quotidien du Postgres ordinarthur-os.
|
|
# Secrets dans `ordinarthur-os-backup-secrets` :
|
|
# PGURL → chaîne `postgres://…` (copie de DATABASE_URL)
|
|
# RCLONE_REMOTE → ex. `b2:ordinarthur-os-backups`
|
|
apiVersion: batch/v1
|
|
kind: CronJob
|
|
metadata:
|
|
name: ordinarthur-os-backup
|
|
namespace: ordinarthur-os
|
|
spec:
|
|
schedule: "0 3 * * *"
|
|
successfulJobsHistoryLimit: 3
|
|
failedJobsHistoryLimit: 3
|
|
jobTemplate:
|
|
spec:
|
|
template:
|
|
spec:
|
|
restartPolicy: OnFailure
|
|
containers:
|
|
- name: pgdump
|
|
image: postgres:16-alpine
|
|
envFrom:
|
|
- secretRef: { name: ordinarthur-os-backup-secrets }
|
|
command: ["/bin/sh", "-c"]
|
|
args:
|
|
- |
|
|
set -euo pipefail
|
|
apk add --no-cache rclone
|
|
pg_dump "$PGURL" --schema=ordinarthur_os --format=c | gzip > /tmp/dump.gz
|
|
rclone copy /tmp/dump.gz "$RCLONE_REMOTE/$(date +%F).gz"
|