working version i guess
Build and Push Docker Images / build-and-push (push) Successful in 23s

This commit is contained in:
2025-05-21 21:14:17 +02:00
parent 2c9485b25d
commit 2d9f236798
2 changed files with 30 additions and 17 deletions
+6 -12
View File
@@ -1,17 +1,11 @@
#!/bin/bash #!/bin/bash
set -e set -e
# Create the target database if it doesn't exist # Check if database exists
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL if ! psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -tAc "SELECT 1 FROM pg_database WHERE datname = '$TARGET_DB_NAME'" | grep -q 1; then
DO # Create the target database if it doesn't exist
\$do\$ createdb -U "$POSTGRES_USER" -O "$POSTGRES_USER" "$TARGET_DB_NAME"
BEGIN fi
IF NOT EXISTS (SELECT FROM pg_database WHERE datname = '$TARGET_DB_NAME') THEN
CREATE DATABASE $TARGET_DB_NAME OWNER $POSTGRES_USER;
END IF;
END
\$do\$;
EOSQL
# Enable the pgvector extension on both databases # Enable the pgvector extension on both databases
for DB in "$POSTGRES_DB" "$TARGET_DB_NAME"; do for DB in "$POSTGRES_DB" "$TARGET_DB_NAME"; do
@@ -28,4 +22,4 @@ else
echo "No SOURCE_DB_URL provided, skipping initial refresh" echo "No SOURCE_DB_URL provided, skipping initial refresh"
fi fi
echo "Database initialization completed at $(date)" echo "Database initialization completed at $(date)"
+24 -5
View File
@@ -23,10 +23,16 @@ EOSQL
# Drop and recreate the target database # Drop and recreate the target database
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
DROP DATABASE IF EXISTS $TARGET_DB_NAME; SELECT pg_terminate_backend(pid)
CREATE DATABASE $TARGET_DB_NAME OWNER $POSTGRES_USER; FROM pg_stat_activity
WHERE datname = '$TARGET_DB_NAME'
AND pid != pg_backend_pid();
EOSQL EOSQL
# Drop and create database as separate commands
dropdb -U "$POSTGRES_USER" --if-exists "$TARGET_DB_NAME"
createdb -U "$POSTGRES_USER" -O "$POSTGRES_USER" "$TARGET_DB_NAME"
# Copy the database if SOURCE_DB_URL is provided # Copy the database if SOURCE_DB_URL is provided
if [ ! -z "$SOURCE_DB_URL" ]; then if [ ! -z "$SOURCE_DB_URL" ]; then
echo "Copying database from $SOURCE_DB_URL to $TARGET_DB_NAME..." echo "Copying database from $SOURCE_DB_URL to $TARGET_DB_NAME..."
@@ -50,9 +56,22 @@ if [ ! -z "$SOURCE_DB_URL" ]; then
EXECUTE 'ALTER SEQUENCE public.' || quote_ident(r.sequence_name) || ' OWNER TO $POSTGRES_USER'; EXECUTE 'ALTER SEQUENCE public.' || quote_ident(r.sequence_name) || ' OWNER TO $POSTGRES_USER';
END LOOP; END LOOP;
FOR r IN SELECT typname FROM pg_type WHERE typnamespace = 'public'::regnamespace -- Handle regular types, excluding arrays and special types
FOR r IN SELECT t.typname
FROM pg_type t
LEFT JOIN pg_type arr ON arr.typelem = t.oid
WHERE t.typnamespace = 'public'::regnamespace
AND t.typtype NOT IN ('a', 'c') -- Exclude arrays and composite types
AND NOT EXISTS (
SELECT 1 FROM pg_type arr
WHERE arr.typarray = t.oid
)
LOOP LOOP
EXECUTE 'ALTER TYPE public.' || quote_ident(r.typname) || ' OWNER TO $POSTGRES_USER'; BEGIN
EXECUTE 'ALTER TYPE public.' || quote_ident(r.typname) || ' OWNER TO $POSTGRES_USER';
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'Could not alter ownership of type %: %', r.typname, SQLERRM;
END;
END LOOP; END LOOP;
END END
\$\$; \$\$;
@@ -61,4 +80,4 @@ EOSQL
echo "Database refresh completed successfully at $(date)" echo "Database refresh completed successfully at $(date)"
else else
echo "No SOURCE_DB_URL provided, skipping database refresh" echo "No SOURCE_DB_URL provided, skipping database refresh"
fi fi