added booking types + working on overtime

This commit is contained in:
2025-09-01 22:41:21 +02:00
parent aa152866d9
commit de6da2906f
16 changed files with 284 additions and 29 deletions

View File

@@ -0,0 +1,16 @@
-- reverse: create "wochen_report" table
DROP TABLE "wochen_report";
-- reverse: create "user_password" table
DROP TABLE "user_password";
-- reverse: set comment to column: "geschlecht" on table: "personal_daten"
COMMENT ON COLUMN "personal_daten"."geschlecht" IS NULL;
-- reverse: create "personal_daten" table
DROP TABLE "personal_daten";
-- reverse: set comment to column: "geraet_id" on table: "anwesenheit"
COMMENT ON COLUMN "anwesenheit"."geraet_id" IS NULL;
-- reverse: set comment to column: "check_in_out" on table: "anwesenheit"
COMMENT ON COLUMN "anwesenheit"."check_in_out" IS NULL;
-- reverse: create "anwesenheit" table
DROP TABLE "anwesenheit";
-- reverse: create "abwesenheit" table
DROP TABLE "abwesenheit";

View File

@@ -0,0 +1,57 @@
-- create "abwesenheit" table
CREATE TABLE "abwesenheit" (
"counter_id" bigserial NOT NULL,
"card_uid" character varying(255) NULL,
"abwesenheit_typ" smallint NULL,
"datum" timestamptz NULL DEFAULT (now())::date,
PRIMARY KEY ("counter_id")
);
-- create "anwesenheit" table
CREATE TABLE "anwesenheit" (
"counter_id" bigserial NOT NULL,
"timestamp" timestamptz NULL DEFAULT CURRENT_TIMESTAMP,
"card_uid" character varying(255) NULL,
"check_in_out" smallint NULL,
"geraet_id" smallint NULL,
PRIMARY KEY ("counter_id")
);
-- set comment to column: "check_in_out" on table: "anwesenheit"
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';
-- set comment to column: "geraet_id" on table: "anwesenheit"
COMMENT ON COLUMN "anwesenheit"."geraet_id" IS 'ID des Lesegerätes';
-- create "personal_daten" table
CREATE TABLE "personal_daten" (
"personal_nummer" integer NOT NULL,
"aktiv_beschaeftigt" boolean NULL,
"vorname" character varying(255) NULL,
"nachname" character varying(255) NULL,
"geburtsdatum" date NULL,
"plz" character varying(255) NULL,
"adresse" character varying(255) NULL,
"geschlecht" smallint NULL,
"card_uid" character varying(255) NULL,
"hauptbeschaeftigungs_ort" smallint NULL,
"arbeitszeit_per_tag" real NULL,
"arbeitszeit_min_start" time NULL,
"arbeitszeit_max_ende" time NULL,
"vorgesetzter_pers_nr" integer NULL,
PRIMARY KEY ("personal_nummer")
);
-- set comment to column: "geschlecht" on table: "personal_daten"
COMMENT ON COLUMN "personal_daten"."geschlecht" IS '1==weiblich, 2==maennlich, 3==divers';
-- create "user_password" table
CREATE TABLE "user_password" (
"personal_nummer" integer NOT NULL,
"pass_hash" text NULL,
"zuletzt_geandert" timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("personal_nummer")
);
-- create "wochen_report" table
CREATE TABLE "wochen_report" (
"id" serial NOT NULL,
"personal_nummer" integer NULL,
"woche_start" date NULL,
"bestaetigt" boolean NULL DEFAULT false,
PRIMARY KEY ("id"),
CONSTRAINT "wochen_report_personal_nummer_woche_start_key" UNIQUE ("personal_nummer", "woche_start")
);

View File

@@ -0,0 +1,31 @@
-- reverse: drop "personal_daten" table
CREATE TABLE "personal_daten" (
"personal_nummer" integer NOT NULL,
"aktiv_beschaeftigt" boolean NULL,
"vorname" character varying(255) NULL,
"nachname" character varying(255) NULL,
"geburtsdatum" date NULL,
"plz" character varying(255) NULL,
"adresse" character varying(255) NULL,
"geschlecht" smallint NULL,
"card_uid" character varying(255) NULL,
"hauptbeschaeftigungs_ort" smallint NULL,
"arbeitszeit_per_tag" real NULL,
"arbeitszeit_min_start" time NULL,
"arbeitszeit_max_ende" time NULL,
"vorgesetzter_pers_nr" integer NULL,
PRIMARY KEY ("personal_nummer")
);
COMMENT ON COLUMN "personal_daten"."geschlecht" IS '1==weiblich, 2==maennlich, 3==divers';
-- reverse: set comment to column: "geschlecht" on table: "s_personal_daten"
COMMENT ON COLUMN "s_personal_daten"."geschlecht" IS NULL;
-- reverse: create "s_personal_daten" table
DROP TABLE "s_personal_daten";
-- reverse: create "s_anwesenheit_typen" table
DROP TABLE "s_anwesenheit_typen";
-- reverse: create "s_abwesenheit_typen" table
DROP TABLE "s_abwesenheit_typen";
-- reverse: modify "wochen_report" table
ALTER TABLE "wochen_report" DROP COLUMN "ueberstunden";
-- reverse: modify "anwesenheit" table
ALTER TABLE "anwesenheit" DROP COLUMN "anwesenheit_typ", ALTER COLUMN "check_in_out" DROP NOT NULL, ALTER COLUMN "card_uid" DROP NOT NULL;

View File

@@ -0,0 +1,38 @@
-- modify "anwesenheit" table
ALTER TABLE "anwesenheit" ALTER COLUMN "card_uid" SET NOT NULL, ALTER COLUMN "check_in_out" SET NOT NULL, ADD COLUMN "anwesenheit_typ" smallint NULL;
-- modify "wochen_report" table
ALTER TABLE "wochen_report" ADD COLUMN "ueberstunden" smallint NULL;
-- create "s_abwesenheit_typen" table
CREATE TABLE "s_abwesenheit_typen" (
"abwesenheit_id" smallint NOT NULL,
"abwesenheit_name" character varying(255) NULL,
PRIMARY KEY ("abwesenheit_id")
);
-- create "s_anwesenheit_typen" table
CREATE TABLE "s_anwesenheit_typen" (
"anwesenheit_id" smallint NOT NULL,
"anwesenheit_name" character varying(255) NULL,
PRIMARY KEY ("anwesenheit_id")
);
-- create "s_personal_daten" table
CREATE TABLE "s_personal_daten" (
"personal_nummer" integer NOT NULL,
"aktiv_beschaeftigt" boolean NULL,
"vorname" character varying(255) NULL,
"nachname" character varying(255) NULL,
"geburtsdatum" date NULL,
"plz" character varying(255) NULL,
"adresse" character varying(255) NULL,
"geschlecht" smallint NULL,
"card_uid" character varying(255) NULL,
"hauptbeschaeftigungs_ort" smallint NULL,
"arbeitszeit_per_tag" real NULL,
"arbeitszeit_min_start" time NULL,
"arbeitszeit_max_ende" time NULL,
"vorgesetzter_pers_nr" integer NULL,
PRIMARY KEY ("personal_nummer")
);
-- set comment to column: "geschlecht" on table: "s_personal_daten"
COMMENT ON COLUMN "s_personal_daten"."geschlecht" IS '1==weiblich, 2==maennlich, 3==divers';
-- drop "personal_daten" table
DROP TABLE "personal_daten";

View File

@@ -0,0 +1,21 @@
-- update Funktion für pass_hash
CREATE OR REPLACE FUNCTION update_zuletzt_geandert()
RETURNS TRIGGER AS $$
BEGIN
-- Nur wenn hash geändert wurde
IF NEW.pass_hash IS DISTINCT FROM OLD.pass_hash THEN
NEW.zuletzt_geandert = now();
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER pass_hash_update
BEFORE UPDATE ON user_password
FOR EACH ROW
EXECUTE FUNCTION update_zuletzt_geandert();
-- Adds crypto extension
CREATE EXTENSION IF NOT EXISTS pgcrypto;

6
migrations/atlas.sum Normal file
View File

@@ -0,0 +1,6 @@
h1:M1O+1WNf/zb6bwiQPExxUhhXL9S4TtZ4qAsuRr0/Zq4=
20250901201159_initial.down.sql h1:BkpujZk5zDCVVoroqrZlXgVR0nvT5Sbzye6aR5e6Z5w=
20250901201159_initial.up.sql h1:SAruU753YcQ0oFa3Ii6ylzesLulAKD1j74zDvqv3BDQ=
20250901201250_control_tables.down.sql h1:4jA+wm0/Ag86KdkKPZfnADsAlOQl1FYIDX8pdfsSYlA=
20250901201250_control_tables.up.sql h1:IGDQ9nT39D12buAi0SUauygXH2ZrCh/YNsZGtk9ztWc=
20250901201710_triggers_extension.sql h1:2Oki9mr3nJBE/supbY9HIr+wp4XJT76a38JTByjnHf0=