ch/first commit

This commit is contained in:
itsscb 2023-09-11 23:04:13 +02:00
parent 060e9d23b8
commit a3a1830226
6 changed files with 186 additions and 0 deletions

27
Makefile Normal file
View File

@ -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

View File

@ -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";

View File

@ -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");

5
go.mod Normal file
View File

@ -0,0 +1,5 @@
module github.com/itsscb/df
go 1.21
toolchain go1.21.1

0
go.sum Normal file
View File

5
main.go Normal file
View File

@ -0,0 +1,5 @@
package main
func main() {
}