db: add more tables

This commit is contained in:
Muyao CHEN 2024-10-19 13:28:02 +02:00
parent 80a5f1f8a8
commit dac36db284
9 changed files with 74 additions and 11 deletions

View File

@ -27,6 +27,17 @@ type Event struct {
TotalAmount sql.NullInt32 TotalAmount sql.NullInt32
} }
type Expense struct {
ID int32
CreatedAt time.Time
UpdatedAt time.Time
Amount int32
Currency string
EventID int32
Name sql.NullInt32
Place sql.NullInt32
}
type Participation struct { type Participation struct {
ID int32 ID int32
UserID int32 UserID int32
@ -36,6 +47,17 @@ type Participation struct {
UpdatedAt time.Time UpdatedAt time.Time
} }
type Transaction struct {
ID int32
ExpenseID int32
UserID int32
Amount int32
Currency string
IsIncome bool
CreatedAt time.Time
UpdatedAt time.Time
}
type User struct { type User struct {
ID int32 ID int32
Email string Email string

View File

@ -32,8 +32,12 @@ type ExpenseRequest struct {
Detail ExpenseDetail `json:"detail"` Detail ExpenseDetail `json:"detail"`
} }
// {{{ Entity
type ExpenseEntity struct { type ExpenseEntity struct {
ID int ID int
CreatedAt time.Time
UpdatedAt time.Time
Amount int Amount int
Currency string Currency string
@ -42,9 +46,6 @@ type ExpenseEntity struct {
// ExpenseDetail // ExpenseDetail
Name string Name string
Place string Place string
CreatedAt time.Time
UpdatedAt time.Time
} }
type ExpenseDetail struct { type ExpenseDetail struct {
@ -52,8 +53,11 @@ type ExpenseDetail struct {
Place string `json:"place"` Place string `json:"place"`
} }
// }}}
type Expense struct { type Expense struct {
ID int ID int
CreatedAt time.Time
UpdatedAt time.Time
Amount Money Amount Money
@ -65,7 +69,4 @@ type Expense struct {
EventID int EventID int
Detail ExpenseDetail Detail ExpenseDetail
CreatedAt time.Time
UpdatedAt time.Time
} }

View File

@ -24,18 +24,25 @@ package model
import "time" import "time"
// {{{ Entity
type TransactionEntity Transaction type TransactionEntity Transaction
// Transaction is the association between Expenses and Users // }}}
// {{{ Domain object
type Transaction struct { type Transaction struct {
ID int ID int
ExpenseID Expense ExpenseID int
UserID int UserID int
Amount int Amount int
Currency string Currency string
IsIncome bool IsIncome bool // To note that the direction of the money (payment or income)
CreatedAt time.Time CreatedAt time.Time
UpdatedAt time.Time UpdatedAt time.Time
} }
// }}}
// Transaction is the association between Expenses and Users

View File

@ -0,0 +1,2 @@
CREATE TABLE "transaction";

View File

@ -0,0 +1,14 @@
CREATE TABLE "transaction" (
"id" serial NOT NULL,
PRIMARY KEY ("id"),
"expense_id" integer NOT NULL,
"user_id" integer NOT NULL,
"amount" integer NOT NULL,
"currency" character varying(255) NOT NULL,
"is_income" boolean NOT NULL DEFAULT FALSE,
"created_at" date NOT NULL,
"updated_at" date NOT NULL
);
ALTER TABLE "transaction"
ADD FOREIGN KEY ("user_id") REFERENCES "user" ("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -0,0 +1 @@
DROP TABLE "expense";

View File

@ -0,0 +1,14 @@
CREATE TABLE "expense" (
"id" serial NOT NULL,
PRIMARY KEY ("id"),
"created_at" date NOT NULL,
"updated_at" date NOT NULL,
"amount" integer NOT NULL,
"currency" character varying NOT NULL,
"event_id" integer NOT NULL,
"name" integer NULL,
"place" integer NULL
);
ALTER TABLE "expense"
ADD FOREIGN KEY ("event_id") REFERENCES "event" ("id") ON DELETE CASCADE ON UPDATE CASCADE

View File

@ -0,0 +1,2 @@
ALTER TABLE "transaction"
ADD FOREIGN KEY ("expense_id") REFERENCES "expense" ("id") ON DELETE CASCADE ON UPDATE CASCADE