From a3a18302263c41ac78b2939a9d328baba1e03402 Mon Sep 17 00:00:00 2001 From: itsscb Date: Mon, 11 Sep 2023 23:04:13 +0200 Subject: [PATCH] ch/first commit --- Makefile | 27 +++++ db/migration/000001_init_schema.down.sql | 16 +++ db/migration/000001_init_schema.up.sql | 133 +++++++++++++++++++++++ go.mod | 5 + go.sum | 0 main.go | 5 + 6 files changed, 186 insertions(+) create mode 100644 Makefile create mode 100644 db/migration/000001_init_schema.down.sql create mode 100644 db/migration/000001_init_schema.up.sql create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..14b79e3 --- /dev/null +++ b/Makefile @@ -0,0 +1,27 @@ +DB_URL=postgresql://root:secret@localhost:5432/df?sslmode=disable + +network: + podman network create df-network + +postgres: + podman run --name postgres -p 5432:5432 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=secret -d postgres:15-alpine + +migratenew: + migrate create -ext sql -dir db/migration -seq init_schema + +migrateup: + migrate -path db/migration -database $(DB_URL) -verbose up + +migratedown: + migrate -path db/migration -database $(DB_URL) -verbose down + +createdb: + podman exec -it postgres createdb --username=root --owner=root df + +dropdb: + podman exec -it postgres dropdb df + +sqlc: + sqlc generate + +.PHONY: postgres migratenew createdb dropdb migrateup migratedown sqlc \ No newline at end of file diff --git a/db/migration/000001_init_schema.down.sql b/db/migration/000001_init_schema.down.sql new file mode 100644 index 0000000..bd55f0c --- /dev/null +++ b/db/migration/000001_init_schema.down.sql @@ -0,0 +1,16 @@ +DROP TABLE IF EXISTS "customers"; +DROP TABLE IF EXISTS "providers"; +DROP TABLE IF EXISTS "returnsLog"; +DROP TABLE IF EXISTS "returns"; +DROP TABLE IF EXISTS "payments"; +DROP TABLE IF EXISTS "documents"; +DROP TABLE IF EXISTS "persons"; +DROP TABLE IF EXISTS "mails"; + + + + + + + + diff --git a/db/migration/000001_init_schema.up.sql b/db/migration/000001_init_schema.up.sql new file mode 100644 index 0000000..288a5ec --- /dev/null +++ b/db/migration/000001_init_schema.up.sql @@ -0,0 +1,133 @@ +CREATE TABLE "mails" ( + "ID" bigserial UNIQUE PRIMARY KEY NOT NULL, + "from" varchar NOT NULL, + "to" varchar NOT NULL, + "cc" varchar, + "timestamp" timestamptz NOT NULL DEFAULT (now()), + "subject" varchar NOT NULL, + "body" text NOT NULL, + "attachments" integer +); + +CREATE TABLE "customers" ( + "ID" bigserial UNIQUE PRIMARY KEY NOT NULL, + "username" varchar UNIQUE NOT NULL, + "passwordhash" varchar NOT NULL, + "firstname" varchar NOT NULL, + "lastname" varchar NOT NULL, + "birthday" timestamptz NOT NULL, + "privacyAccepted" boolean NOT NULL DEFAULT false, + "privacyAcceptedDate" timestamptz, + "email" varchar UNIQUE NOT NULL, + "phone" varchar, + "city" varchar NOT NULL, + "zip" varchar NOT NULL, + "street" varchar NOT NULL, + "country" varchar NOT NULL, + "token" varchar, + "tokenValid" boolean DEFAULT false, + "tokenExpiration" timestamptz NOT NULL DEFAULT (now()), + "creator" varchar NOT NULL, + "created" timestamptz NOT NULL DEFAULT (now()), + "changer" varchar NOT NULL, + "changed" timestamptz NOT NULL DEFAULT (now()) +); + +CREATE TABLE "persons" ( + "ID" bigserial UNIQUE PRIMARY KEY NOT NULL, + "customerID" bigserial, + "firstname" varchar NOT NULL, + "lastname" varchar NOT NULL, + "birthday" timestamptz NOT NULL, + "city" varchar NOT NULL, + "zip" varchar NOT NULL, + "street" varchar NOT NULL, + "country" varchar NOT NULL, + "documents" bigserial, + "creator" varchar NOT NULL, + "created" timestamptz NOT NULL DEFAULT (now()), + "changer" varchar NOT NULL, + "changed" timestamptz NOT NULL DEFAULT (now()) +); + +CREATE TABLE "documents" ( + "ID" bigserial UNIQUE PRIMARY KEY NOT NULL, + "name" varchar NOT NULL, + "type" varchar NOT NULL, + "path" varchar NOT NULL, + "url" varchar NOT NULL, + "valid" boolean NOT NULL DEFAULT false, + "validDate" timestamptz, + "validatedBy" varchar +); + +CREATE TABLE "payments" ( + "ID" bigserial UNIQUE PRIMARY KEY NOT NULL, + "customerID" bigserial NOT NULL, + "paymentCategory" varchar NOT NULL, + "bankname" varchar, + "IBAN" varchar, + "BIC" varchar, + "paypalAccount" varchar, + "paypalID" varchar, + "paymentSystem" varchar, + "type" varchar NOT NULL, + "creator" varchar NOT NULL, + "created" timestamptz NOT NULL DEFAULT (now()), + "changer" varchar NOT NULL, + "changed" timestamptz NOT NULL DEFAULT (now()) +); + +CREATE TABLE "providers" ( + "ID" bigserial UNIQUE PRIMARY KEY NOT NULL, + "name" varchar NOT NULL, + "description" text NOT NULL, + "category" varchar NOT NULL, + "email" varchar NOT NULL, + "creator" varchar NOT NULL, + "created" timestamptz NOT NULL DEFAULT (now()), + "changer" varchar NOT NULL, + "changed" timestamptz NOT NULL DEFAULT (now()) +); + +CREATE TABLE "returns" ( + "ID" bigserial UNIQUE PRIMARY KEY NOT NULL, + "personID" bigserial NOT NULL, + "providerID" bigserial NOT NULL, + "name" varchar NOT NULL, + "description" text NOT NULL, + "category" varchar NOT NULL, + "email" varchar NOT NULL, + "status" varchar NOT NULL, + "creator" varchar NOT NULL, + "created" timestamptz NOT NULL DEFAULT (now()), + "changer" varchar NOT NULL, + "changed" timestamptz NOT NULL DEFAULT (now()) +); + +CREATE TABLE "returnsLog" ( + "ID" bigserial UNIQUE PRIMARY KEY NOT NULL, + "returnsID" bigserial, + "mailID" bigserial, + "status" varchar, + "creator" varchar NOT NULL, + "created" timestamptz NOT NULL DEFAULT (now()), + "changer" varchar NOT NULL, + "changed" timestamptz NOT NULL DEFAULT (now()) +); + +ALTER TABLE "mails" ADD FOREIGN KEY ("attachments") REFERENCES "documents" ("ID"); + +ALTER TABLE "persons" ADD FOREIGN KEY ("customerID") REFERENCES "customers" ("ID"); + +ALTER TABLE "persons" ADD FOREIGN KEY ("documents") REFERENCES "documents" ("ID"); + +ALTER TABLE "payments" ADD FOREIGN KEY ("customerID") REFERENCES "customers" ("ID"); + +ALTER TABLE "returns" ADD FOREIGN KEY ("personID") REFERENCES "persons" ("ID"); + +ALTER TABLE "returns" ADD FOREIGN KEY ("providerID") REFERENCES "providers" ("ID"); + +ALTER TABLE "returnsLog" ADD FOREIGN KEY ("returnsID") REFERENCES "returns" ("ID"); + +ALTER TABLE "returnsLog" ADD FOREIGN KEY ("mailID") REFERENCES "mails" ("ID"); diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..4e3b254 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/itsscb/df + +go 1.21 + +toolchain go1.21.1 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..e69de29 diff --git a/main.go b/main.go new file mode 100644 index 0000000..7905807 --- /dev/null +++ b/main.go @@ -0,0 +1,5 @@ +package main + +func main() { + +}