Restructure scripts into dev/ and prod/ for the devcontainer

- scripts/prod: entrypoint, db-setup and schema.sql shipped in the image
- scripts/dev: seed/clear db, psql and cleanup, run natively in the
  devcontainer instead of via docker-compose
- move setup.cfg to the repo root so linters pick it up
- Makefile targets run directly in the devcontainer

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
finnandClaude Opus 5.5 committed 2026-10-21 08:39:28 +00:00
1 parent 7c2b9fb3f4
commit 9895017385
10 files changed
+36 -30

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
#!/bin/bash
set -e
echo "start db setup"
if [ -z "$PGSQL_HOST" ]; then
echo "Note: Postgresql not set!!"
exit 1;
fi
export PGSQL_PORT="${PGSQL_PORT:-5432}"
wait-for-it --timeout=15 "$PGSQL_HOST:$PGSQL_PORT"
# Create schema in postgresql
export PGPASSWORD="$PGSQL_PASSWORD"
psql -1 -v ON_ERROR_STOP=1 -h "$PGSQL_HOST" -p "$PGSQL_PORT" -U "$PGSQL_USER" -d "$PGSQL_NAME" -f "$(dirname "${BASH_SOURCE[0]}")/schema.sql"
echo "end db setup"
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
set -e
source db-setup.sh
exec "$@"
+31
View File
@@ -0,0 +1,31 @@
CREATE TABLE IF NOT EXISTS domains (
name varchar PRIMARY KEY
);
CREATE TABLE IF NOT EXISTS emails (
id serial PRIMARY KEY,
email varchar(255) NOT NULL UNIQUE
);
-- Make emails unique by lower-case comparison
CREATE UNIQUE INDEX IF NOT EXISTS email_unique_idx on emails (LOWER(email));
CREATE TABLE IF NOT EXISTS users (
id serial PRIMARY KEY,
email_id integer REFERENCES emails(id) ON DELETE RESTRICT NOT NULL UNIQUE,
passwordhash varchar(255) NOT NULL,
enabled boolean NOT NULL DEFAULT TRUE,
is_admin boolean NOT NULL DEFAULT FALSE,
can_use_different_alias_domain boolean NOT NULL DEFAULT FALSE,
note text NOT NULL DEFAULT ''
);
-- source=me2@finn.st destination=me@finn.st: me2 is an alias of me
CREATE TABLE IF NOT EXISTS aliases (
id serial PRIMARY KEY,
source_email_id integer REFERENCES emails(id) ON DELETE RESTRICT NOT NULL,
destination_user_id integer REFERENCES users(id) ON DELETE RESTRICT NOT NULL,
enabled boolean NOT NULL DEFAULT TRUE,
note text,
UNIQUE(source_email_id, destination_user_id)
);