2 Commits
Author SHA1 Message Date
maro 1b7dbad843 Add initial Payload migration
CI / test (push) Successful in 3m18s
Release / test (push) Successful in 3m13s
Release / build-and-deploy (push) Successful in 9m6s
2026-08-26 00:45:59 +00:00
maroandClaude Sonnet 5 8d60d48bd0 Fix .env writer: quote values so shell metacharacters don't break source
CI / test (push) Successful in 3m14s
deploy.sh sources .env directly as bash (`set -a; source .env`), but
setup.sh wrote raw unquoted values. The default SMTP_FROM ("ANOUMA
<no-reply@...>") contains `<`/`>`, which bash parses as redirections,
failing with "syntax error near unexpected token `newline'" on every
deploy. Both scripts' env_set now write double-quoted values with
backslashes/quotes escaped — valid for both `source` and Docker
Compose's env_file parsing (which strips matching quotes).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 02:12:24 +02:00
5 changed files with 6930 additions and 5 deletions
+9 -3
View File
@@ -61,13 +61,19 @@ trap 'rm -f "$LOCK_FILE"' EXIT
# .env helpers — same idempotent read/write approach as setup.sh. # .env helpers — same idempotent read/write approach as setup.sh.
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
env_get() { grep -E "^$1=" .env 2>/dev/null | tail -n1 | cut -d'=' -f2- || true; } env_get() { grep -E "^$1=" .env 2>/dev/null | tail -n1 | cut -d'=' -f2- || true; }
# Quoted the same way as setup.sh's env_set — this file is `source`d as a
# bash script below, so an unquoted value with shell metacharacters would
# break parsing.
env_set() { env_set() {
local key="$1" value="$2" local key="$1" value="$2" escaped quoted
escaped="${value//\\/\\\\}"
escaped="${escaped//\"/\\\"}"
quoted="\"${escaped}\""
if grep -qE "^$key=" .env; then if grep -qE "^$key=" .env; then
local tmp; tmp="$(mktemp)" local tmp; tmp="$(mktemp)"
awk -v k="$key" -v v="$value" 'BEGIN{FS=OFS="="} $1==k{$0=k "=" v} {print}' .env > "$tmp" && mv "$tmp" .env awk -v k="$key" -v v="$quoted" 'BEGIN{FS=OFS="="} $1==k{$0=k "=" v} {print}' .env > "$tmp" && mv "$tmp" .env
else else
printf '%s=%s\n' "$key" "$value" >> .env printf '%s=%s\n' "$key" "$quoted" >> .env
fi fi
} }
File diff suppressed because it is too large Load Diff
+807
View File
@@ -0,0 +1,807 @@
import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
await db.execute(sql`
CREATE TYPE "public"."enum_users_role" AS ENUM('admin');
CREATE TYPE "public"."enum_events_category" AS ENUM('prozessbegleitung', 'doula', 'erdenkinder', 'maedchenkreis', 'singen-im-kreis', 'singen-fuer-schwangere', 'singen-fuer-mamas-mit-baby', 'sonstiges');
CREATE TYPE "public"."enum_events_status" AS ENUM('draft', 'published');
CREATE TYPE "public"."enum__events_v_version_category" AS ENUM('prozessbegleitung', 'doula', 'erdenkinder', 'maedchenkreis', 'singen-im-kreis', 'singen-fuer-schwangere', 'singen-fuer-mamas-mit-baby', 'sonstiges');
CREATE TYPE "public"."enum__events_v_version_status" AS ENUM('draft', 'published');
CREATE TYPE "public"."enum_posts_status" AS ENUM('draft', 'published');
CREATE TYPE "public"."enum__posts_v_version_status" AS ENUM('draft', 'published');
CREATE TYPE "public"."enum_offers_category" AS ENUM('prozessbegleitung', 'doula-begleitung', 'kindergruppen', 'singkreise');
CREATE TYPE "public"."enum_offers_visibility" AS ENUM('public', 'private');
CREATE TYPE "public"."enum_offers_status" AS ENUM('draft', 'published');
CREATE TYPE "public"."enum__offers_v_version_category" AS ENUM('prozessbegleitung', 'doula-begleitung', 'kindergruppen', 'singkreise');
CREATE TYPE "public"."enum__offers_v_version_visibility" AS ENUM('public', 'private');
CREATE TYPE "public"."enum__offers_v_version_status" AS ENUM('draft', 'published');
CREATE TYPE "public"."enum_event_registrations_status" AS ENUM('registered', 'cancelled', 'attended');
CREATE TYPE "public"."enum_availability_weekday" AS ENUM('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday');
CREATE TYPE "public"."enum_availability_overrides_type" AS ENUM('unavailable', 'custom-hours');
CREATE TYPE "public"."enum_availability_overrides_reason" AS ENUM('urlaub', 'feiertag', 'krankheit', 'sonderoeffnungszeit', 'sonstiges');
CREATE TYPE "public"."enum_booking_requests_appointment_type" AS ENUM('onsite', 'online');
CREATE TYPE "public"."enum_booking_requests_status" AS ENUM('pending', 'confirmed', 'rejected', 'cancelled');
CREATE TYPE "public"."enum_redirects_type" AS ENUM('permanent', 'temporary');
CREATE TYPE "public"."enum_seo_settings_opening_hours_days" AS ENUM('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');
CREATE TABLE "users_sessions" (
"_order" integer NOT NULL,
"_parent_id" integer NOT NULL,
"id" varchar PRIMARY KEY NOT NULL,
"created_at" timestamp(3) with time zone,
"expires_at" timestamp(3) with time zone NOT NULL
);
CREATE TABLE "users" (
"id" serial PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"role" "enum_users_role" DEFAULT 'admin' NOT NULL,
"calendar_feed_token_hash" varchar,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"email" varchar NOT NULL,
"reset_password_token" varchar,
"reset_password_expiration" timestamp(3) with time zone,
"salt" varchar,
"hash" varchar,
"login_attempts" numeric DEFAULT 0,
"lock_until" timestamp(3) with time zone
);
CREATE TABLE "customers_sessions" (
"_order" integer NOT NULL,
"_parent_id" integer NOT NULL,
"id" varchar PRIMARY KEY NOT NULL,
"created_at" timestamp(3) with time zone,
"expires_at" timestamp(3) with time zone NOT NULL
);
CREATE TABLE "customers" (
"id" serial PRIMARY KEY NOT NULL,
"name" varchar NOT NULL,
"phone" varchar,
"email_verified" boolean DEFAULT false,
"email_verification_token_hash" varchar,
"email_verification_expires" timestamp(3) with time zone,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"email" varchar NOT NULL,
"reset_password_token" varchar,
"reset_password_expiration" timestamp(3) with time zone,
"salt" varchar,
"hash" varchar,
"login_attempts" numeric DEFAULT 0,
"lock_until" timestamp(3) with time zone
);
CREATE TABLE "media" (
"id" serial PRIMARY KEY NOT NULL,
"alt" varchar NOT NULL,
"caption" varchar,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"url" varchar,
"thumbnail_u_r_l" varchar,
"filename" varchar,
"mime_type" varchar,
"filesize" numeric,
"width" numeric,
"height" numeric,
"focal_x" numeric,
"focal_y" numeric,
"sizes_thumbnail_url" varchar,
"sizes_thumbnail_width" numeric,
"sizes_thumbnail_height" numeric,
"sizes_thumbnail_mime_type" varchar,
"sizes_thumbnail_filesize" numeric,
"sizes_thumbnail_filename" varchar,
"sizes_card_url" varchar,
"sizes_card_width" numeric,
"sizes_card_height" numeric,
"sizes_card_mime_type" varchar,
"sizes_card_filesize" numeric,
"sizes_card_filename" varchar,
"sizes_hero_url" varchar,
"sizes_hero_width" numeric,
"sizes_hero_height" numeric,
"sizes_hero_mime_type" varchar,
"sizes_hero_filesize" numeric,
"sizes_hero_filename" varchar
);
CREATE TABLE "events" (
"id" serial PRIMARY KEY NOT NULL,
"title" varchar,
"slug" varchar,
"description" jsonb,
"date" timestamp(3) with time zone,
"start_time" timestamp(3) with time zone,
"end_time" timestamp(3) with time zone,
"location" varchar,
"category" "enum_events_category" DEFAULT 'sonstiges',
"image_id" integer,
"max_participants" numeric,
"registration_required" boolean DEFAULT false,
"registration_info" varchar,
"is_online" boolean DEFAULT false,
"meeting_password" varchar,
"regenerate_password" boolean DEFAULT false,
"reminder60_enabled" boolean DEFAULT true,
"reminder30_enabled" boolean DEFAULT true,
"host_reminder_enabled" boolean DEFAULT true,
"host_reminder60_sent" boolean DEFAULT false,
"host_reminder30_sent" boolean DEFAULT false,
"is_private_booking" boolean DEFAULT false,
"booking_request_id" integer,
"seo_title" varchar,
"seo_description" varchar,
"seo_keywords" varchar,
"seo_og_image_id" integer,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"_status" "enum_events_status" DEFAULT 'draft'
);
CREATE TABLE "_events_v" (
"id" serial PRIMARY KEY NOT NULL,
"parent_id" integer,
"version_title" varchar,
"version_slug" varchar,
"version_description" jsonb,
"version_date" timestamp(3) with time zone,
"version_start_time" timestamp(3) with time zone,
"version_end_time" timestamp(3) with time zone,
"version_location" varchar,
"version_category" "enum__events_v_version_category" DEFAULT 'sonstiges',
"version_image_id" integer,
"version_max_participants" numeric,
"version_registration_required" boolean DEFAULT false,
"version_registration_info" varchar,
"version_is_online" boolean DEFAULT false,
"version_meeting_password" varchar,
"version_regenerate_password" boolean DEFAULT false,
"version_reminder60_enabled" boolean DEFAULT true,
"version_reminder30_enabled" boolean DEFAULT true,
"version_host_reminder_enabled" boolean DEFAULT true,
"version_host_reminder60_sent" boolean DEFAULT false,
"version_host_reminder30_sent" boolean DEFAULT false,
"version_is_private_booking" boolean DEFAULT false,
"version_booking_request_id" integer,
"version_seo_title" varchar,
"version_seo_description" varchar,
"version_seo_keywords" varchar,
"version_seo_og_image_id" integer,
"version_updated_at" timestamp(3) with time zone,
"version_created_at" timestamp(3) with time zone,
"version__status" "enum__events_v_version_status" DEFAULT 'draft',
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"latest" boolean,
"autosave" boolean
);
CREATE TABLE "posts" (
"id" serial PRIMARY KEY NOT NULL,
"title" varchar,
"slug" varchar,
"teaser" varchar,
"content" jsonb,
"cover_image_id" integer,
"publish_date" timestamp(3) with time zone,
"author" varchar DEFAULT 'Anouma',
"seo_title" varchar,
"seo_description" varchar,
"seo_keywords" varchar,
"seo_og_image_id" integer,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"_status" "enum_posts_status" DEFAULT 'draft'
);
CREATE TABLE "_posts_v" (
"id" serial PRIMARY KEY NOT NULL,
"parent_id" integer,
"version_title" varchar,
"version_slug" varchar,
"version_teaser" varchar,
"version_content" jsonb,
"version_cover_image_id" integer,
"version_publish_date" timestamp(3) with time zone,
"version_author" varchar DEFAULT 'Anouma',
"version_seo_title" varchar,
"version_seo_description" varchar,
"version_seo_keywords" varchar,
"version_seo_og_image_id" integer,
"version_updated_at" timestamp(3) with time zone,
"version_created_at" timestamp(3) with time zone,
"version__status" "enum__posts_v_version_status" DEFAULT 'draft',
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"latest" boolean,
"autosave" boolean
);
CREATE TABLE "offers" (
"id" serial PRIMARY KEY NOT NULL,
"title" varchar,
"slug" varchar,
"short_description" varchar,
"description" jsonb,
"image_id" integer,
"category" "enum_offers_category",
"order" numeric DEFAULT 0,
"visibility" "enum_offers_visibility" DEFAULT 'public',
"bookable" boolean DEFAULT false,
"price" varchar,
"duration_minutes" numeric,
"seo_title" varchar,
"seo_description" varchar,
"seo_keywords" varchar,
"seo_og_image_id" integer,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"_status" "enum_offers_status" DEFAULT 'draft'
);
CREATE TABLE "_offers_v" (
"id" serial PRIMARY KEY NOT NULL,
"parent_id" integer,
"version_title" varchar,
"version_slug" varchar,
"version_short_description" varchar,
"version_description" jsonb,
"version_image_id" integer,
"version_category" "enum__offers_v_version_category",
"version_order" numeric DEFAULT 0,
"version_visibility" "enum__offers_v_version_visibility" DEFAULT 'public',
"version_bookable" boolean DEFAULT false,
"version_price" varchar,
"version_duration_minutes" numeric,
"version_seo_title" varchar,
"version_seo_description" varchar,
"version_seo_keywords" varchar,
"version_seo_og_image_id" integer,
"version_updated_at" timestamp(3) with time zone,
"version_created_at" timestamp(3) with time zone,
"version__status" "enum__offers_v_version_status" DEFAULT 'draft',
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"latest" boolean
);
CREATE TABLE "event_registrations" (
"id" serial PRIMARY KEY NOT NULL,
"event_id" integer NOT NULL,
"name" varchar NOT NULL,
"email" varchar NOT NULL,
"status" "enum_event_registrations_status" DEFAULT 'registered' NOT NULL,
"registered_at" timestamp(3) with time zone,
"reminder60_sent" boolean DEFAULT false,
"reminder30_sent" boolean DEFAULT false,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
);
CREATE TABLE "availability" (
"id" serial PRIMARY KEY NOT NULL,
"weekday" "enum_availability_weekday" NOT NULL,
"start_time" timestamp(3) with time zone NOT NULL,
"end_time" timestamp(3) with time zone NOT NULL,
"active" boolean DEFAULT true,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
);
CREATE TABLE "availability_overrides" (
"id" serial PRIMARY KEY NOT NULL,
"date" timestamp(3) with time zone NOT NULL,
"type" "enum_availability_overrides_type" DEFAULT 'unavailable' NOT NULL,
"start_time" timestamp(3) with time zone,
"end_time" timestamp(3) with time zone,
"reason" "enum_availability_overrides_reason",
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
);
CREATE TABLE "booking_requests" (
"id" serial PRIMARY KEY NOT NULL,
"user_id" integer NOT NULL,
"offer_id" integer NOT NULL,
"date" timestamp(3) with time zone NOT NULL,
"start_time" timestamp(3) with time zone NOT NULL,
"end_time" timestamp(3) with time zone NOT NULL,
"appointment_type" "enum_booking_requests_appointment_type" DEFAULT 'onsite' NOT NULL,
"status" "enum_booking_requests_status" DEFAULT 'pending' NOT NULL,
"user_message" varchar,
"internal_note" varchar,
"proposed_alternative_date" timestamp(3) with time zone,
"proposed_alternative_start_time" timestamp(3) with time zone,
"proposed_alternative_end_time" timestamp(3) with time zone,
"linked_event_id" integer,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
);
CREATE TABLE "redirects" (
"id" serial PRIMARY KEY NOT NULL,
"from_path" varchar NOT NULL,
"to_path" varchar NOT NULL,
"type" "enum_redirects_type" DEFAULT 'permanent' NOT NULL,
"enabled" boolean DEFAULT true,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
);
CREATE TABLE "payload_kv" (
"id" serial PRIMARY KEY NOT NULL,
"key" varchar NOT NULL,
"data" jsonb NOT NULL
);
CREATE TABLE "payload_locked_documents" (
"id" serial PRIMARY KEY NOT NULL,
"global_slug" varchar,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
);
CREATE TABLE "payload_locked_documents_rels" (
"id" serial PRIMARY KEY NOT NULL,
"order" integer,
"parent_id" integer NOT NULL,
"path" varchar NOT NULL,
"users_id" integer,
"customers_id" integer,
"media_id" integer,
"events_id" integer,
"posts_id" integer,
"offers_id" integer,
"event_registrations_id" integer,
"availability_id" integer,
"availability_overrides_id" integer,
"booking_requests_id" integer,
"redirects_id" integer
);
CREATE TABLE "payload_preferences" (
"id" serial PRIMARY KEY NOT NULL,
"key" varchar,
"value" jsonb,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
);
CREATE TABLE "payload_preferences_rels" (
"id" serial PRIMARY KEY NOT NULL,
"order" integer,
"parent_id" integer NOT NULL,
"path" varchar NOT NULL,
"users_id" integer,
"customers_id" integer
);
CREATE TABLE "payload_migrations" (
"id" serial PRIMARY KEY NOT NULL,
"name" varchar,
"batch" numeric,
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
);
CREATE TABLE "home_values" (
"_order" integer NOT NULL,
"_parent_id" integer NOT NULL,
"id" varchar PRIMARY KEY NOT NULL,
"title" varchar NOT NULL,
"quote" varchar NOT NULL
);
CREATE TABLE "home" (
"id" serial PRIMARY KEY NOT NULL,
"hero_eyebrow" varchar,
"hero_title" varchar NOT NULL,
"hero_highlight" varchar,
"hero_supporting" varchar,
"hero_image_id" integer,
"about_eyebrow" varchar,
"about_title" varchar,
"about_text" jsonb,
"about_image_id" integer,
"values_eyebrow" varchar,
"values_title" varchar,
"cta_title" varchar,
"cta_lead" varchar,
"seo_title" varchar,
"seo_description" varchar,
"seo_keywords" varchar,
"seo_og_image_id" integer,
"updated_at" timestamp(3) with time zone,
"created_at" timestamp(3) with time zone
);
CREATE TABLE "about" (
"id" serial PRIMARY KEY NOT NULL,
"eyebrow" varchar,
"title" varchar NOT NULL,
"portrait_id" integer,
"body" jsonb NOT NULL,
"closing_lead" varchar,
"closing_highlight" varchar,
"closing_paragraph" varchar,
"seo_title" varchar,
"seo_description" varchar,
"seo_keywords" varchar,
"seo_og_image_id" integer,
"updated_at" timestamp(3) with time zone,
"created_at" timestamp(3) with time zone
);
CREATE TABLE "angebote_intro" (
"id" serial PRIMARY KEY NOT NULL,
"eyebrow" varchar,
"title" varchar NOT NULL,
"lead" varchar,
"seo_title" varchar,
"seo_description" varchar,
"seo_keywords" varchar,
"seo_og_image_id" integer,
"updated_at" timestamp(3) with time zone,
"created_at" timestamp(3) with time zone
);
CREATE TABLE "aktuelles_intro" (
"id" serial PRIMARY KEY NOT NULL,
"eyebrow" varchar,
"title" varchar NOT NULL,
"lead" varchar,
"seo_title" varchar,
"seo_description" varchar,
"seo_keywords" varchar,
"seo_og_image_id" integer,
"updated_at" timestamp(3) with time zone,
"created_at" timestamp(3) with time zone
);
CREATE TABLE "contact" (
"id" serial PRIMARY KEY NOT NULL,
"eyebrow" varchar,
"title" varchar NOT NULL,
"lead" varchar,
"email" varchar NOT NULL,
"phone" varchar,
"region" varchar,
"seo_title" varchar,
"seo_description" varchar,
"seo_keywords" varchar,
"seo_og_image_id" integer,
"updated_at" timestamp(3) with time zone,
"created_at" timestamp(3) with time zone
);
CREATE TABLE "booking_steps" (
"_order" integer NOT NULL,
"_parent_id" integer NOT NULL,
"id" varchar PRIMARY KEY NOT NULL,
"title" varchar NOT NULL,
"text" varchar NOT NULL
);
CREATE TABLE "booking" (
"id" serial PRIMARY KEY NOT NULL,
"eyebrow" varchar,
"title" varchar NOT NULL,
"lead" varchar,
"form_note" varchar,
"seo_title" varchar,
"seo_description" varchar,
"seo_keywords" varchar,
"seo_og_image_id" integer,
"updated_at" timestamp(3) with time zone,
"created_at" timestamp(3) with time zone
);
CREATE TABLE "meeting_settings" (
"id" serial PRIMARY KEY NOT NULL,
"participant_join_window_minutes" numeric DEFAULT 30 NOT NULL,
"host_join_window_minutes" numeric DEFAULT 60 NOT NULL,
"meeting_close_after_minutes" numeric DEFAULT 30 NOT NULL,
"updated_at" timestamp(3) with time zone,
"created_at" timestamp(3) with time zone
);
CREATE TABLE "booking_settings" (
"id" serial PRIMARY KEY NOT NULL,
"location_name" varchar DEFAULT 'Anouma',
"street" varchar,
"postal_code" varchar,
"city" varchar,
"region" varchar,
"country" varchar,
"updated_at" timestamp(3) with time zone,
"created_at" timestamp(3) with time zone
);
CREATE TABLE "seo_settings_opening_hours_days" (
"order" integer NOT NULL,
"parent_id" varchar NOT NULL,
"value" "enum_seo_settings_opening_hours_days",
"id" serial PRIMARY KEY NOT NULL
);
CREATE TABLE "seo_settings_opening_hours" (
"_order" integer NOT NULL,
"_parent_id" integer NOT NULL,
"id" varchar PRIMARY KEY NOT NULL,
"opens" varchar NOT NULL,
"closes" varchar NOT NULL
);
CREATE TABLE "seo_settings_social_links" (
"_order" integer NOT NULL,
"_parent_id" integer NOT NULL,
"id" varchar PRIMARY KEY NOT NULL,
"platform" varchar NOT NULL,
"url" varchar NOT NULL
);
CREATE TABLE "seo_settings" (
"id" serial PRIMARY KEY NOT NULL,
"site_url" varchar,
"default_description" varchar,
"default_og_image_id" integer,
"robots_indexable" boolean DEFAULT true,
"business_name" varchar DEFAULT 'Anouma',
"business_description" varchar,
"latitude" numeric,
"longitude" numeric,
"updated_at" timestamp(3) with time zone,
"created_at" timestamp(3) with time zone
);
ALTER TABLE "users_sessions" ADD CONSTRAINT "users_sessions_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "customers_sessions" ADD CONSTRAINT "customers_sessions_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."customers"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "events" ADD CONSTRAINT "events_image_id_media_id_fk" FOREIGN KEY ("image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "events" ADD CONSTRAINT "events_booking_request_id_booking_requests_id_fk" FOREIGN KEY ("booking_request_id") REFERENCES "public"."booking_requests"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "events" ADD CONSTRAINT "events_seo_og_image_id_media_id_fk" FOREIGN KEY ("seo_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "_events_v" ADD CONSTRAINT "_events_v_parent_id_events_id_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."events"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "_events_v" ADD CONSTRAINT "_events_v_version_image_id_media_id_fk" FOREIGN KEY ("version_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "_events_v" ADD CONSTRAINT "_events_v_version_booking_request_id_booking_requests_id_fk" FOREIGN KEY ("version_booking_request_id") REFERENCES "public"."booking_requests"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "_events_v" ADD CONSTRAINT "_events_v_version_seo_og_image_id_media_id_fk" FOREIGN KEY ("version_seo_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "posts" ADD CONSTRAINT "posts_cover_image_id_media_id_fk" FOREIGN KEY ("cover_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "posts" ADD CONSTRAINT "posts_seo_og_image_id_media_id_fk" FOREIGN KEY ("seo_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "_posts_v" ADD CONSTRAINT "_posts_v_parent_id_posts_id_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."posts"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "_posts_v" ADD CONSTRAINT "_posts_v_version_cover_image_id_media_id_fk" FOREIGN KEY ("version_cover_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "_posts_v" ADD CONSTRAINT "_posts_v_version_seo_og_image_id_media_id_fk" FOREIGN KEY ("version_seo_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "offers" ADD CONSTRAINT "offers_image_id_media_id_fk" FOREIGN KEY ("image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "offers" ADD CONSTRAINT "offers_seo_og_image_id_media_id_fk" FOREIGN KEY ("seo_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "_offers_v" ADD CONSTRAINT "_offers_v_parent_id_offers_id_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."offers"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "_offers_v" ADD CONSTRAINT "_offers_v_version_image_id_media_id_fk" FOREIGN KEY ("version_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "_offers_v" ADD CONSTRAINT "_offers_v_version_seo_og_image_id_media_id_fk" FOREIGN KEY ("version_seo_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "event_registrations" ADD CONSTRAINT "event_registrations_event_id_events_id_fk" FOREIGN KEY ("event_id") REFERENCES "public"."events"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "booking_requests" ADD CONSTRAINT "booking_requests_user_id_customers_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."customers"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "booking_requests" ADD CONSTRAINT "booking_requests_offer_id_offers_id_fk" FOREIGN KEY ("offer_id") REFERENCES "public"."offers"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "booking_requests" ADD CONSTRAINT "booking_requests_linked_event_id_events_id_fk" FOREIGN KEY ("linked_event_id") REFERENCES "public"."events"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."payload_locked_documents"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_users_fk" FOREIGN KEY ("users_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_customers_fk" FOREIGN KEY ("customers_id") REFERENCES "public"."customers"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_media_fk" FOREIGN KEY ("media_id") REFERENCES "public"."media"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_events_fk" FOREIGN KEY ("events_id") REFERENCES "public"."events"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_posts_fk" FOREIGN KEY ("posts_id") REFERENCES "public"."posts"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_offers_fk" FOREIGN KEY ("offers_id") REFERENCES "public"."offers"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_event_registrations_fk" FOREIGN KEY ("event_registrations_id") REFERENCES "public"."event_registrations"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_availability_fk" FOREIGN KEY ("availability_id") REFERENCES "public"."availability"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_availability_overrides_fk" FOREIGN KEY ("availability_overrides_id") REFERENCES "public"."availability_overrides"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_booking_requests_fk" FOREIGN KEY ("booking_requests_id") REFERENCES "public"."booking_requests"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_redirects_fk" FOREIGN KEY ("redirects_id") REFERENCES "public"."redirects"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_preferences_rels" ADD CONSTRAINT "payload_preferences_rels_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."payload_preferences"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_preferences_rels" ADD CONSTRAINT "payload_preferences_rels_users_fk" FOREIGN KEY ("users_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "payload_preferences_rels" ADD CONSTRAINT "payload_preferences_rels_customers_fk" FOREIGN KEY ("customers_id") REFERENCES "public"."customers"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "home_values" ADD CONSTRAINT "home_values_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."home"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "home" ADD CONSTRAINT "home_hero_image_id_media_id_fk" FOREIGN KEY ("hero_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "home" ADD CONSTRAINT "home_about_image_id_media_id_fk" FOREIGN KEY ("about_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "home" ADD CONSTRAINT "home_seo_og_image_id_media_id_fk" FOREIGN KEY ("seo_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "about" ADD CONSTRAINT "about_portrait_id_media_id_fk" FOREIGN KEY ("portrait_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "about" ADD CONSTRAINT "about_seo_og_image_id_media_id_fk" FOREIGN KEY ("seo_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "angebote_intro" ADD CONSTRAINT "angebote_intro_seo_og_image_id_media_id_fk" FOREIGN KEY ("seo_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "aktuelles_intro" ADD CONSTRAINT "aktuelles_intro_seo_og_image_id_media_id_fk" FOREIGN KEY ("seo_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "contact" ADD CONSTRAINT "contact_seo_og_image_id_media_id_fk" FOREIGN KEY ("seo_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "booking_steps" ADD CONSTRAINT "booking_steps_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."booking"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "booking" ADD CONSTRAINT "booking_seo_og_image_id_media_id_fk" FOREIGN KEY ("seo_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
ALTER TABLE "seo_settings_opening_hours_days" ADD CONSTRAINT "seo_settings_opening_hours_days_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."seo_settings_opening_hours"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "seo_settings_opening_hours" ADD CONSTRAINT "seo_settings_opening_hours_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."seo_settings"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "seo_settings_social_links" ADD CONSTRAINT "seo_settings_social_links_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."seo_settings"("id") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "seo_settings" ADD CONSTRAINT "seo_settings_default_og_image_id_media_id_fk" FOREIGN KEY ("default_og_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
CREATE INDEX "users_sessions_order_idx" ON "users_sessions" USING btree ("_order");
CREATE INDEX "users_sessions_parent_id_idx" ON "users_sessions" USING btree ("_parent_id");
CREATE INDEX "users_calendar_feed_token_hash_idx" ON "users" USING btree ("calendar_feed_token_hash");
CREATE INDEX "users_updated_at_idx" ON "users" USING btree ("updated_at");
CREATE INDEX "users_created_at_idx" ON "users" USING btree ("created_at");
CREATE UNIQUE INDEX "users_email_idx" ON "users" USING btree ("email");
CREATE INDEX "customers_sessions_order_idx" ON "customers_sessions" USING btree ("_order");
CREATE INDEX "customers_sessions_parent_id_idx" ON "customers_sessions" USING btree ("_parent_id");
CREATE INDEX "customers_email_verification_token_hash_idx" ON "customers" USING btree ("email_verification_token_hash");
CREATE INDEX "customers_updated_at_idx" ON "customers" USING btree ("updated_at");
CREATE INDEX "customers_created_at_idx" ON "customers" USING btree ("created_at");
CREATE UNIQUE INDEX "customers_email_idx" ON "customers" USING btree ("email");
CREATE INDEX "media_updated_at_idx" ON "media" USING btree ("updated_at");
CREATE INDEX "media_created_at_idx" ON "media" USING btree ("created_at");
CREATE UNIQUE INDEX "media_filename_idx" ON "media" USING btree ("filename");
CREATE INDEX "media_sizes_thumbnail_sizes_thumbnail_filename_idx" ON "media" USING btree ("sizes_thumbnail_filename");
CREATE INDEX "media_sizes_card_sizes_card_filename_idx" ON "media" USING btree ("sizes_card_filename");
CREATE INDEX "media_sizes_hero_sizes_hero_filename_idx" ON "media" USING btree ("sizes_hero_filename");
CREATE UNIQUE INDEX "events_slug_idx" ON "events" USING btree ("slug");
CREATE INDEX "events_image_idx" ON "events" USING btree ("image_id");
CREATE INDEX "events_booking_request_idx" ON "events" USING btree ("booking_request_id");
CREATE INDEX "events_seo_seo_og_image_idx" ON "events" USING btree ("seo_og_image_id");
CREATE INDEX "events_updated_at_idx" ON "events" USING btree ("updated_at");
CREATE INDEX "events_created_at_idx" ON "events" USING btree ("created_at");
CREATE INDEX "events__status_idx" ON "events" USING btree ("_status");
CREATE INDEX "_events_v_parent_idx" ON "_events_v" USING btree ("parent_id");
CREATE INDEX "_events_v_version_version_slug_idx" ON "_events_v" USING btree ("version_slug");
CREATE INDEX "_events_v_version_version_image_idx" ON "_events_v" USING btree ("version_image_id");
CREATE INDEX "_events_v_version_version_booking_request_idx" ON "_events_v" USING btree ("version_booking_request_id");
CREATE INDEX "_events_v_version_seo_version_seo_og_image_idx" ON "_events_v" USING btree ("version_seo_og_image_id");
CREATE INDEX "_events_v_version_version_updated_at_idx" ON "_events_v" USING btree ("version_updated_at");
CREATE INDEX "_events_v_version_version_created_at_idx" ON "_events_v" USING btree ("version_created_at");
CREATE INDEX "_events_v_version_version__status_idx" ON "_events_v" USING btree ("version__status");
CREATE INDEX "_events_v_created_at_idx" ON "_events_v" USING btree ("created_at");
CREATE INDEX "_events_v_updated_at_idx" ON "_events_v" USING btree ("updated_at");
CREATE INDEX "_events_v_latest_idx" ON "_events_v" USING btree ("latest");
CREATE INDEX "_events_v_autosave_idx" ON "_events_v" USING btree ("autosave");
CREATE UNIQUE INDEX "posts_slug_idx" ON "posts" USING btree ("slug");
CREATE INDEX "posts_cover_image_idx" ON "posts" USING btree ("cover_image_id");
CREATE INDEX "posts_seo_seo_og_image_idx" ON "posts" USING btree ("seo_og_image_id");
CREATE INDEX "posts_updated_at_idx" ON "posts" USING btree ("updated_at");
CREATE INDEX "posts_created_at_idx" ON "posts" USING btree ("created_at");
CREATE INDEX "posts__status_idx" ON "posts" USING btree ("_status");
CREATE INDEX "_posts_v_parent_idx" ON "_posts_v" USING btree ("parent_id");
CREATE INDEX "_posts_v_version_version_slug_idx" ON "_posts_v" USING btree ("version_slug");
CREATE INDEX "_posts_v_version_version_cover_image_idx" ON "_posts_v" USING btree ("version_cover_image_id");
CREATE INDEX "_posts_v_version_seo_version_seo_og_image_idx" ON "_posts_v" USING btree ("version_seo_og_image_id");
CREATE INDEX "_posts_v_version_version_updated_at_idx" ON "_posts_v" USING btree ("version_updated_at");
CREATE INDEX "_posts_v_version_version_created_at_idx" ON "_posts_v" USING btree ("version_created_at");
CREATE INDEX "_posts_v_version_version__status_idx" ON "_posts_v" USING btree ("version__status");
CREATE INDEX "_posts_v_created_at_idx" ON "_posts_v" USING btree ("created_at");
CREATE INDEX "_posts_v_updated_at_idx" ON "_posts_v" USING btree ("updated_at");
CREATE INDEX "_posts_v_latest_idx" ON "_posts_v" USING btree ("latest");
CREATE INDEX "_posts_v_autosave_idx" ON "_posts_v" USING btree ("autosave");
CREATE UNIQUE INDEX "offers_slug_idx" ON "offers" USING btree ("slug");
CREATE INDEX "offers_image_idx" ON "offers" USING btree ("image_id");
CREATE INDEX "offers_seo_seo_og_image_idx" ON "offers" USING btree ("seo_og_image_id");
CREATE INDEX "offers_updated_at_idx" ON "offers" USING btree ("updated_at");
CREATE INDEX "offers_created_at_idx" ON "offers" USING btree ("created_at");
CREATE INDEX "offers__status_idx" ON "offers" USING btree ("_status");
CREATE INDEX "_offers_v_parent_idx" ON "_offers_v" USING btree ("parent_id");
CREATE INDEX "_offers_v_version_version_slug_idx" ON "_offers_v" USING btree ("version_slug");
CREATE INDEX "_offers_v_version_version_image_idx" ON "_offers_v" USING btree ("version_image_id");
CREATE INDEX "_offers_v_version_seo_version_seo_og_image_idx" ON "_offers_v" USING btree ("version_seo_og_image_id");
CREATE INDEX "_offers_v_version_version_updated_at_idx" ON "_offers_v" USING btree ("version_updated_at");
CREATE INDEX "_offers_v_version_version_created_at_idx" ON "_offers_v" USING btree ("version_created_at");
CREATE INDEX "_offers_v_version_version__status_idx" ON "_offers_v" USING btree ("version__status");
CREATE INDEX "_offers_v_created_at_idx" ON "_offers_v" USING btree ("created_at");
CREATE INDEX "_offers_v_updated_at_idx" ON "_offers_v" USING btree ("updated_at");
CREATE INDEX "_offers_v_latest_idx" ON "_offers_v" USING btree ("latest");
CREATE INDEX "event_registrations_event_idx" ON "event_registrations" USING btree ("event_id");
CREATE INDEX "event_registrations_updated_at_idx" ON "event_registrations" USING btree ("updated_at");
CREATE INDEX "event_registrations_created_at_idx" ON "event_registrations" USING btree ("created_at");
CREATE INDEX "availability_updated_at_idx" ON "availability" USING btree ("updated_at");
CREATE INDEX "availability_created_at_idx" ON "availability" USING btree ("created_at");
CREATE INDEX "availability_overrides_updated_at_idx" ON "availability_overrides" USING btree ("updated_at");
CREATE INDEX "availability_overrides_created_at_idx" ON "availability_overrides" USING btree ("created_at");
CREATE INDEX "booking_requests_user_idx" ON "booking_requests" USING btree ("user_id");
CREATE INDEX "booking_requests_offer_idx" ON "booking_requests" USING btree ("offer_id");
CREATE INDEX "booking_requests_linked_event_idx" ON "booking_requests" USING btree ("linked_event_id");
CREATE INDEX "booking_requests_updated_at_idx" ON "booking_requests" USING btree ("updated_at");
CREATE INDEX "booking_requests_created_at_idx" ON "booking_requests" USING btree ("created_at");
CREATE UNIQUE INDEX "redirects_from_path_idx" ON "redirects" USING btree ("from_path");
CREATE INDEX "redirects_updated_at_idx" ON "redirects" USING btree ("updated_at");
CREATE INDEX "redirects_created_at_idx" ON "redirects" USING btree ("created_at");
CREATE UNIQUE INDEX "payload_kv_key_idx" ON "payload_kv" USING btree ("key");
CREATE INDEX "payload_locked_documents_global_slug_idx" ON "payload_locked_documents" USING btree ("global_slug");
CREATE INDEX "payload_locked_documents_updated_at_idx" ON "payload_locked_documents" USING btree ("updated_at");
CREATE INDEX "payload_locked_documents_created_at_idx" ON "payload_locked_documents" USING btree ("created_at");
CREATE INDEX "payload_locked_documents_rels_order_idx" ON "payload_locked_documents_rels" USING btree ("order");
CREATE INDEX "payload_locked_documents_rels_parent_idx" ON "payload_locked_documents_rels" USING btree ("parent_id");
CREATE INDEX "payload_locked_documents_rels_path_idx" ON "payload_locked_documents_rels" USING btree ("path");
CREATE INDEX "payload_locked_documents_rels_users_id_idx" ON "payload_locked_documents_rels" USING btree ("users_id");
CREATE INDEX "payload_locked_documents_rels_customers_id_idx" ON "payload_locked_documents_rels" USING btree ("customers_id");
CREATE INDEX "payload_locked_documents_rels_media_id_idx" ON "payload_locked_documents_rels" USING btree ("media_id");
CREATE INDEX "payload_locked_documents_rels_events_id_idx" ON "payload_locked_documents_rels" USING btree ("events_id");
CREATE INDEX "payload_locked_documents_rels_posts_id_idx" ON "payload_locked_documents_rels" USING btree ("posts_id");
CREATE INDEX "payload_locked_documents_rels_offers_id_idx" ON "payload_locked_documents_rels" USING btree ("offers_id");
CREATE INDEX "payload_locked_documents_rels_event_registrations_id_idx" ON "payload_locked_documents_rels" USING btree ("event_registrations_id");
CREATE INDEX "payload_locked_documents_rels_availability_id_idx" ON "payload_locked_documents_rels" USING btree ("availability_id");
CREATE INDEX "payload_locked_documents_rels_availability_overrides_id_idx" ON "payload_locked_documents_rels" USING btree ("availability_overrides_id");
CREATE INDEX "payload_locked_documents_rels_booking_requests_id_idx" ON "payload_locked_documents_rels" USING btree ("booking_requests_id");
CREATE INDEX "payload_locked_documents_rels_redirects_id_idx" ON "payload_locked_documents_rels" USING btree ("redirects_id");
CREATE INDEX "payload_preferences_key_idx" ON "payload_preferences" USING btree ("key");
CREATE INDEX "payload_preferences_updated_at_idx" ON "payload_preferences" USING btree ("updated_at");
CREATE INDEX "payload_preferences_created_at_idx" ON "payload_preferences" USING btree ("created_at");
CREATE INDEX "payload_preferences_rels_order_idx" ON "payload_preferences_rels" USING btree ("order");
CREATE INDEX "payload_preferences_rels_parent_idx" ON "payload_preferences_rels" USING btree ("parent_id");
CREATE INDEX "payload_preferences_rels_path_idx" ON "payload_preferences_rels" USING btree ("path");
CREATE INDEX "payload_preferences_rels_users_id_idx" ON "payload_preferences_rels" USING btree ("users_id");
CREATE INDEX "payload_preferences_rels_customers_id_idx" ON "payload_preferences_rels" USING btree ("customers_id");
CREATE INDEX "payload_migrations_updated_at_idx" ON "payload_migrations" USING btree ("updated_at");
CREATE INDEX "payload_migrations_created_at_idx" ON "payload_migrations" USING btree ("created_at");
CREATE INDEX "home_values_order_idx" ON "home_values" USING btree ("_order");
CREATE INDEX "home_values_parent_id_idx" ON "home_values" USING btree ("_parent_id");
CREATE INDEX "home_hero_image_idx" ON "home" USING btree ("hero_image_id");
CREATE INDEX "home_about_image_idx" ON "home" USING btree ("about_image_id");
CREATE INDEX "home_seo_seo_og_image_idx" ON "home" USING btree ("seo_og_image_id");
CREATE INDEX "about_portrait_idx" ON "about" USING btree ("portrait_id");
CREATE INDEX "about_seo_seo_og_image_idx" ON "about" USING btree ("seo_og_image_id");
CREATE INDEX "angebote_intro_seo_seo_og_image_idx" ON "angebote_intro" USING btree ("seo_og_image_id");
CREATE INDEX "aktuelles_intro_seo_seo_og_image_idx" ON "aktuelles_intro" USING btree ("seo_og_image_id");
CREATE INDEX "contact_seo_seo_og_image_idx" ON "contact" USING btree ("seo_og_image_id");
CREATE INDEX "booking_steps_order_idx" ON "booking_steps" USING btree ("_order");
CREATE INDEX "booking_steps_parent_id_idx" ON "booking_steps" USING btree ("_parent_id");
CREATE INDEX "booking_seo_seo_og_image_idx" ON "booking" USING btree ("seo_og_image_id");
CREATE INDEX "seo_settings_opening_hours_days_order_idx" ON "seo_settings_opening_hours_days" USING btree ("order");
CREATE INDEX "seo_settings_opening_hours_days_parent_idx" ON "seo_settings_opening_hours_days" USING btree ("parent_id");
CREATE INDEX "seo_settings_opening_hours_order_idx" ON "seo_settings_opening_hours" USING btree ("_order");
CREATE INDEX "seo_settings_opening_hours_parent_id_idx" ON "seo_settings_opening_hours" USING btree ("_parent_id");
CREATE INDEX "seo_settings_social_links_order_idx" ON "seo_settings_social_links" USING btree ("_order");
CREATE INDEX "seo_settings_social_links_parent_id_idx" ON "seo_settings_social_links" USING btree ("_parent_id");
CREATE INDEX "seo_settings_default_og_image_idx" ON "seo_settings" USING btree ("default_og_image_id");`)
}
export async function down({ db, payload, req }: MigrateDownArgs): Promise<void> {
await db.execute(sql`
DROP TABLE "users_sessions" CASCADE;
DROP TABLE "users" CASCADE;
DROP TABLE "customers_sessions" CASCADE;
DROP TABLE "customers" CASCADE;
DROP TABLE "media" CASCADE;
DROP TABLE "events" CASCADE;
DROP TABLE "_events_v" CASCADE;
DROP TABLE "posts" CASCADE;
DROP TABLE "_posts_v" CASCADE;
DROP TABLE "offers" CASCADE;
DROP TABLE "_offers_v" CASCADE;
DROP TABLE "event_registrations" CASCADE;
DROP TABLE "availability" CASCADE;
DROP TABLE "availability_overrides" CASCADE;
DROP TABLE "booking_requests" CASCADE;
DROP TABLE "redirects" CASCADE;
DROP TABLE "payload_kv" CASCADE;
DROP TABLE "payload_locked_documents" CASCADE;
DROP TABLE "payload_locked_documents_rels" CASCADE;
DROP TABLE "payload_preferences" CASCADE;
DROP TABLE "payload_preferences_rels" CASCADE;
DROP TABLE "payload_migrations" CASCADE;
DROP TABLE "home_values" CASCADE;
DROP TABLE "home" CASCADE;
DROP TABLE "about" CASCADE;
DROP TABLE "angebote_intro" CASCADE;
DROP TABLE "aktuelles_intro" CASCADE;
DROP TABLE "contact" CASCADE;
DROP TABLE "booking_steps" CASCADE;
DROP TABLE "booking" CASCADE;
DROP TABLE "meeting_settings" CASCADE;
DROP TABLE "booking_settings" CASCADE;
DROP TABLE "seo_settings_opening_hours_days" CASCADE;
DROP TABLE "seo_settings_opening_hours" CASCADE;
DROP TABLE "seo_settings_social_links" CASCADE;
DROP TABLE "seo_settings" CASCADE;
DROP TYPE "public"."enum_users_role";
DROP TYPE "public"."enum_events_category";
DROP TYPE "public"."enum_events_status";
DROP TYPE "public"."enum__events_v_version_category";
DROP TYPE "public"."enum__events_v_version_status";
DROP TYPE "public"."enum_posts_status";
DROP TYPE "public"."enum__posts_v_version_status";
DROP TYPE "public"."enum_offers_category";
DROP TYPE "public"."enum_offers_visibility";
DROP TYPE "public"."enum_offers_status";
DROP TYPE "public"."enum__offers_v_version_category";
DROP TYPE "public"."enum__offers_v_version_visibility";
DROP TYPE "public"."enum__offers_v_version_status";
DROP TYPE "public"."enum_event_registrations_status";
DROP TYPE "public"."enum_availability_weekday";
DROP TYPE "public"."enum_availability_overrides_type";
DROP TYPE "public"."enum_availability_overrides_reason";
DROP TYPE "public"."enum_booking_requests_appointment_type";
DROP TYPE "public"."enum_booking_requests_status";
DROP TYPE "public"."enum_redirects_type";
DROP TYPE "public"."enum_seo_settings_opening_hours_days";`)
}
+9
View File
@@ -0,0 +1,9 @@
import * as migration_20260826_004425 from './20260826_004425';
export const migrations = [
{
up: migration_20260826_004425.up,
down: migration_20260826_004425.down,
name: '20260826_004425'
},
];
+12 -2
View File
@@ -263,13 +263,23 @@ env_get() { $SUDO grep -E "^$1=" "$ENV_FILE" 2>/dev/null | tail -n1 | cut -d'='
# passing, never re-interpolated into a nested shell string) so arbitrary # passing, never re-interpolated into a nested shell string) so arbitrary
# characters in $value — quotes, backslashes, anything a typed SMTP/registry # characters in $value — quotes, backslashes, anything a typed SMTP/registry
# password might contain — can never break quoting or be misinterpreted. # password might contain — can never break quoting or be misinterpreted.
#
# The value is written double-quoted, with backslashes and double quotes
# escaped: deploy.sh later `source`s this file as a bash script, so an
# unquoted value containing shell metacharacters (e.g. the default
# SMTP_FROM="ANOUMA <no-reply@...>", whose `<`/`>` are redirections) breaks
# with "syntax error near unexpected token `newline'". Quoting also works
# fine for Docker Compose's own env_file parsing, which strips matching
# surrounding quotes.
env_set() { env_set() {
local key="$1" value="$2" tmp local key="$1" value="$2" tmp escaped
escaped="${value//\\/\\\\}"
escaped="${escaped//\"/\\\"}"
tmp="$(mktemp)" tmp="$(mktemp)"
if $SUDO test -f "$ENV_FILE"; then if $SUDO test -f "$ENV_FILE"; then
$SUDO grep -vE "^${key}=" "$ENV_FILE" > "$tmp" 2>/dev/null || true $SUDO grep -vE "^${key}=" "$ENV_FILE" > "$tmp" 2>/dev/null || true
fi fi
printf '%s=%s\n' "$key" "$value" >> "$tmp" printf '%s="%s"\n' "$key" "$escaped" >> "$tmp"
$SUDO cp "$tmp" "$ENV_FILE" $SUDO cp "$tmp" "$ENV_FILE"
rm -f "$tmp" rm -f "$tmp"
} }