CHANGE: added db initialization script

This commit is contained in:
2025-02-21 14:19:44 +01:00
parent db507259c7
commit 32a4f5277a
5 changed files with 63 additions and 8 deletions

View File

@@ -0,0 +1,35 @@
-- ----------------------------
-- Table structure for anwesenheit
-- ----------------------------
DROP TABLE IF EXISTS "anwesenheit";
CREATE TABLE "anwesenheit" (
"counter_id" bigserial PRIMARY KEY,
"timestamp" timestamp(6),
"card_uid" varchar(255),
"check_in_out" int2,
"geraet_id" int2
);
COMMENT ON COLUMN "anwesenheit"."check_in_out" IS '1=Check In 2=Check Out , 3=Check in Manuell, 4=Check out manuell255=Automatic Check Out';
COMMENT ON COLUMN "anwesenheit"."geraet_id" IS 'ID des Lesegerätes';
-- ----------------------------
-- Table structure for personal_daten
-- ----------------------------
DROP TABLE IF EXISTS "personal_daten";
CREATE TABLE "personal_daten" (
"personal_nummer" int4 NOT NULL PRIMARY KEY,
"aktiv_beschaeftigt" bool,
"vorname" varchar(255),
"nachname" varchar(255),
"geburtsdatum" date,
"plz" varchar(255),
"adresse" varchar(255),
"geschlecht" int2,
"card_uid" varchar(255),
"hauptbeschaeftigungs_ort" int2,
"arbeitszeit_per_tag" float4,
"arbeitszeit_min_start" time(6),
"arbeitszeit_max_ende" time(6),
"vorgesetzter_pers_nr" int4
);
COMMENT ON COLUMN "personal_daten"."geschlecht" IS '1==weiblich, 2==maennlich, 3==divers';

View File

@@ -0,0 +1,13 @@
#!/bin/bash
set -e # Exit on error
echo "Creating PostgreSQL user and setting permissions..."
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER $POSTGRES_API_USER WITH ENCRYPTED PASSWORD '$POSTGRES_API_PASSWORD';
GRANT CONNECT ON DATABASE $POSTGRES_DB TO $POSTGRES_API_USER;
GRANT USAGE ON SCHEMA public TO $POSTGRES_API_USER;
GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA public TO $POSTGRES_API_USER;
EOSQL
echo "User creation and permissions setup complete!"

View File

@@ -6,12 +6,13 @@ services:
env_file:
- .env
environment:
POSTGRES_USER: ${POSTGRES_ADMIN}
POSTGRES_PASSWORD: ${POSTGRES_ADMIN_PASS}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
PGDATA: /var/lib/postgresql/data/pg_data
volumes:
- ${POSTGRES_PATH}:/var/lib/postgresql/data
- ${POSTGRES_PATH}/initdb:/docker-entrypoint-initdb.d
ports:
- 5432:5432
@@ -28,8 +29,8 @@ services:
environment:
POSTGRES_HOST: db
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASS: ${POSTGRES_PASSWORD}
POSTGRES_USER: ${POSTGRES_API_USER}
POSTGRES_PASS: ${POSTGRES_API_PASSWORD}
EXPOSED_PORT: ${EXPOSED_PORT}
DEBUG: true
ports:

View File

@@ -6,8 +6,8 @@ services:
env_file:
- .env
environment:
POSTGRES_USER: ${POSTGRES_ADMIN}
POSTGRES_PASSWORD: ${POSTGRES_ADMIN_PASS}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
PGDATA: /var/lib/postgresql/data/pg_data
volumes:
@@ -21,8 +21,8 @@ services:
environment:
POSTGRES_HOST: db
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASS: ${POSTGRES_PASSWORD}
POSTGRES_USER: ${POSTGRES_API_USER}
POSTGRES_PASS: ${POSTGRES_API_PASSWORD}
EXPOSED_PORT: ${EXPOSED_PORT}
ports:
- ${EXPOSED_PORT}:8080

6
db.sql
View File

@@ -8,6 +8,7 @@ CREATE TABLE "public"."anwesenheit" (
);
COMMENT ON COLUMN "public"."anwesenheit"."check_in_out" IS '1=Check In 2=Check Out 255=Automatic Check Out';
COMMENT ON COLUMN "public"."anwesenheit"."geraet_id" IS 'ID des Lesegerätes';
-- @block create table personaldaten
CREATE TABLE "public"."personal_daten" (
"personal_nummer" SERIAL PRIMARY KEY,
@@ -25,9 +26,13 @@ COMMENT ON COLUMN "public"."personal_daten"."akiv_beschaeftig" IS 'derzeit aktiv
COMMENT ON COLUMN "public"."personal_daten"."geschlecht" IS 'w:1 m:2 div:3 kA:null ';
COMMENT ON COLUMN "public"."personal_daten"."card_uid" IS 'RFID-Karten-UID';
COMMENT ON COLUMN "public"."personal_daten"."hauptbeschaeftigung_ort" IS 'Chemnitz:1 Sayda:2';
-- @block drop tables
DROP TABLE IF EXISTS "public"."anwesenheit";
DROP TABLE IF EXISTS "public"."personal_daten";
-- @block insert into personal_daten
INSERT INTO personal_daten (
personal_nummer,
@@ -53,6 +58,7 @@ VALUES (
'test_card',
'1'
);
-- @block select
SELECT *
FROM personal_daten;