Add DB reset script + seed_data.sql
This commit is contained in:
37
backend/scripts/README_seed.md
Normal file
37
backend/scripts/README_seed.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# DB reset + seed (dev-machine)
|
||||
|
||||
This repo uses Alembic migrations as schema source-of-truth.
|
||||
|
||||
## Reset to the current seed
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
./scripts/reset_db.sh
|
||||
```
|
||||
|
||||
Environment variables (optional):
|
||||
|
||||
- `DB_NAME` (default `openclaw_agency`)
|
||||
- `DB_USER` (default `postgres`)
|
||||
- `DB_HOST` (default `127.0.0.1`)
|
||||
- `DB_PORT` (default `5432`)
|
||||
- `DB_PASSWORD` (default `postgres`)
|
||||
|
||||
## Updating the seed
|
||||
|
||||
The seed is a **data-only** dump (not schema). Regenerate it from the current DB state:
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
PGPASSWORD=postgres pg_dump \
|
||||
--data-only \
|
||||
--column-inserts \
|
||||
--disable-triggers \
|
||||
--no-owner \
|
||||
--no-privileges \
|
||||
-U postgres -h 127.0.0.1 -d openclaw_agency \
|
||||
> scripts/seed_data.sql
|
||||
|
||||
# IMPORTANT: do not include alembic_version in the seed (migrations already set it)
|
||||
# (our committed seed already has this removed)
|
||||
```
|
||||
26
backend/scripts/reset_db.sh
Executable file
26
backend/scripts/reset_db.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
DB_NAME=${DB_NAME:-openclaw_agency}
|
||||
DB_USER=${DB_USER:-postgres}
|
||||
DB_HOST=${DB_HOST:-127.0.0.1}
|
||||
DB_PORT=${DB_PORT:-5432}
|
||||
DB_PASSWORD=${DB_PASSWORD:-postgres}
|
||||
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
export PGPASSWORD="$DB_PASSWORD"
|
||||
|
||||
# 1) wipe schema
|
||||
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -v ON_ERROR_STOP=1 \
|
||||
-c 'DROP SCHEMA public CASCADE; CREATE SCHEMA public;'
|
||||
|
||||
# 2) migrate
|
||||
. .venv/bin/activate
|
||||
alembic upgrade head
|
||||
|
||||
# 3) seed
|
||||
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -v ON_ERROR_STOP=1 \
|
||||
-f scripts/seed_data.sql
|
||||
|
||||
echo "Reset complete: $DB_USER@$DB_HOST:$DB_PORT/$DB_NAME"
|
||||
160
backend/scripts/seed_data.sql
Normal file
160
backend/scripts/seed_data.sql
Normal file
@@ -0,0 +1,160 @@
|
||||
--
|
||||
-- PostgreSQL database dump
|
||||
--
|
||||
|
||||
-- Dumped from database version 16.9 (Ubuntu 16.9-0ubuntu0.24.04.1)
|
||||
-- Dumped by pg_dump version 16.9 (Ubuntu 16.9-0ubuntu0.24.04.1)
|
||||
|
||||
SET statement_timeout = 0;
|
||||
SET lock_timeout = 0;
|
||||
SET idle_in_transaction_session_timeout = 0;
|
||||
SET client_encoding = 'UTF8';
|
||||
SET standard_conforming_strings = on;
|
||||
SELECT pg_catalog.set_config('search_path', '', false);
|
||||
SET check_function_bodies = false;
|
||||
SET xmloption = content;
|
||||
SET client_min_messages = warning;
|
||||
SET row_security = off;
|
||||
|
||||
--
|
||||
-- Data for Name: departments; Type: TABLE DATA; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
SET SESSION AUTHORIZATION DEFAULT;
|
||||
|
||||
ALTER TABLE public.departments DISABLE TRIGGER ALL;
|
||||
|
||||
|
||||
|
||||
ALTER TABLE public.departments ENABLE TRIGGER ALL;
|
||||
|
||||
--
|
||||
-- Data for Name: employees; Type: TABLE DATA; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER TABLE public.employees DISABLE TRIGGER ALL;
|
||||
|
||||
|
||||
|
||||
ALTER TABLE public.employees ENABLE TRIGGER ALL;
|
||||
|
||||
--
|
||||
-- Data for Name: activities; Type: TABLE DATA; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER TABLE public.activities DISABLE TRIGGER ALL;
|
||||
|
||||
|
||||
|
||||
ALTER TABLE public.activities ENABLE TRIGGER ALL;
|
||||
|
||||
--
|
||||
-- Data for Name: teams; Type: TABLE DATA; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER TABLE public.teams DISABLE TRIGGER ALL;
|
||||
|
||||
|
||||
|
||||
ALTER TABLE public.teams ENABLE TRIGGER ALL;
|
||||
|
||||
--
|
||||
-- Data for Name: projects; Type: TABLE DATA; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER TABLE public.projects DISABLE TRIGGER ALL;
|
||||
|
||||
|
||||
|
||||
ALTER TABLE public.projects ENABLE TRIGGER ALL;
|
||||
|
||||
--
|
||||
-- Data for Name: project_members; Type: TABLE DATA; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER TABLE public.project_members DISABLE TRIGGER ALL;
|
||||
|
||||
|
||||
|
||||
ALTER TABLE public.project_members ENABLE TRIGGER ALL;
|
||||
|
||||
--
|
||||
-- Data for Name: tasks; Type: TABLE DATA; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER TABLE public.tasks DISABLE TRIGGER ALL;
|
||||
|
||||
|
||||
|
||||
ALTER TABLE public.tasks ENABLE TRIGGER ALL;
|
||||
|
||||
--
|
||||
-- Data for Name: task_comments; Type: TABLE DATA; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
ALTER TABLE public.task_comments DISABLE TRIGGER ALL;
|
||||
|
||||
|
||||
|
||||
ALTER TABLE public.task_comments ENABLE TRIGGER ALL;
|
||||
|
||||
--
|
||||
-- Name: activities_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
SELECT pg_catalog.setval('public.activities_id_seq', 1, false);
|
||||
|
||||
|
||||
--
|
||||
-- Name: departments_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
SELECT pg_catalog.setval('public.departments_id_seq', 1, false);
|
||||
|
||||
|
||||
--
|
||||
-- Name: employees_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
SELECT pg_catalog.setval('public.employees_id_seq', 1, true);
|
||||
|
||||
|
||||
--
|
||||
-- Name: project_members_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
SELECT pg_catalog.setval('public.project_members_id_seq', 1, false);
|
||||
|
||||
|
||||
--
|
||||
-- Name: projects_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
SELECT pg_catalog.setval('public.projects_id_seq', 1, false);
|
||||
|
||||
|
||||
--
|
||||
-- Name: task_comments_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
SELECT pg_catalog.setval('public.task_comments_id_seq', 1, false);
|
||||
|
||||
|
||||
--
|
||||
-- Name: tasks_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
SELECT pg_catalog.setval('public.tasks_id_seq', 1, false);
|
||||
|
||||
|
||||
--
|
||||
-- Name: teams_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
SELECT pg_catalog.setval('public.teams_id_seq', 1, false);
|
||||
|
||||
|
||||
--
|
||||
-- PostgreSQL database dump complete
|
||||
--
|
||||
|
||||
Reference in New Issue
Block a user