package core import "github.com/shopspring/decimal" type User struct { Username string `json:"username"` Password string `json:"password"` } type Member struct { Id uint `json:"-"` PlanId uint `json:"-"` Name string `json:"name,omitempty"` UserId *string `json:"username,omitempty"` } // CREATE TABLE plans(id INTEGER PRIMARY KEY AUTOINCREMENT, name STRING, owner STRING, FOREIGN KEY(owner) REFERENCES users(username)) // CREATE TABLE plan_user_relations(username STRING, plan INTEGER, PRIMARY KEY(username, plan), FOREIGN KEY username REFERENCES user(username), FOREIGN KEY plan REFERENCES plans(id)) type Plan struct { Id uint `json:"id"` Name string `json:"name"` Owner string `json:"owner"` Description string `json:"description"` JoinCode string `json:"join_code,omitempty"` } type Expense struct { Id uint `json:"id"` PlanId uint `json:"-"` PayerId uint `json:"-"` Amount decimal.Decimal `json:"amount"` } type Debt struct { Id uint ExpenseId uint `json:"-"` DebtorId uint `json:"-"` Amount decimal.Decimal Paid decimal.Decimal } // CREATE TABLE polls(id INTEGER PRIMARY KEY AUTOINCREMENT, plan INTEGER, name STRING, options JSON, FOREIGN KEY plan REFERENCES plans(id)) type Poll struct { Id uint `json:"id"` PlanId uint `json:"-"` Options string `json:"options"` } // CREATE TABLE votes(id INTEGER, poll INTEGER, user STRING, value JSON, FOREIGN KEY poll REFERENCES polls(id), FOREIGN KEY user REFERENCES user(username)) type Vote struct { PollId uint `json:"-"` MemberId uint `json:"member_id"` Value string `json:"value"` }