Restructure project
This commit is contained in:
parent
e44e7caa11
commit
16b2f17301
46 changed files with 1744 additions and 1265 deletions
74
internal/controller/table.go
Normal file
74
internal/controller/table.go
Normal file
|
@ -0,0 +1,74 @@
|
|||
package controller
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"gitlab.unjx.de/flohoss/cafe-plaetschwiesle/internal/types"
|
||||
"gorm.io/plugin/soft_delete"
|
||||
)
|
||||
|
||||
type Table struct {
|
||||
ID uint64 `gorm:"primaryKey" json:"id" validate:"optional"`
|
||||
OrderCount uint64 `json:"order_count" validate:"required"`
|
||||
Total float32 `json:"total" validate:"required"`
|
||||
UpdatedAt int64 `json:"updated_at" validate:"optional"`
|
||||
IsDeleted soft_delete.DeletedAt `gorm:"softDelete:flag" json:"is_deleted" swaggerignore:"true"`
|
||||
}
|
||||
|
||||
func (c *Controller) GetAllTables() []Table {
|
||||
var tables []Table
|
||||
c.orm.Model(
|
||||
&Table{},
|
||||
).Joins(
|
||||
"left join orders on tables.id = orders.table_id",
|
||||
).Joins(
|
||||
"left join order_items on orders.order_item_id = order_items.id",
|
||||
).Select(
|
||||
"tables.id, tables.updated_at, sum(order_items.price) as total, count(orders.id) as order_count",
|
||||
).Group(
|
||||
"tables.id",
|
||||
).Order("tables.id").Find(&tables)
|
||||
return tables
|
||||
}
|
||||
|
||||
func (c *Controller) CreateNewTable() (Table, error) {
|
||||
var table Table
|
||||
var err error
|
||||
result := c.orm.Unscoped().Where("is_deleted = ?", 1).Limit(1).Find(&table)
|
||||
if result.RowsAffected == 0 {
|
||||
err = c.orm.Create(&table).Error
|
||||
} else {
|
||||
table.IsDeleted = 0
|
||||
err = c.orm.Unscoped().Save(&table).Error
|
||||
}
|
||||
if err != nil {
|
||||
return table, fmt.Errorf(types.CannotCreate.String())
|
||||
}
|
||||
return table, nil
|
||||
}
|
||||
|
||||
func (c *Controller) DeleteLatestTable() error {
|
||||
var table Table
|
||||
err := c.orm.Model(
|
||||
&Table{},
|
||||
).Joins(
|
||||
"left join orders on tables.id = orders.table_id",
|
||||
).Joins(
|
||||
"left join order_items on orders.order_item_id = order_items.id",
|
||||
).Select(
|
||||
"tables.id, count(orders.id) as order_count",
|
||||
).Group(
|
||||
"tables.id",
|
||||
).Last(&table).Error
|
||||
if err != nil {
|
||||
return fmt.Errorf(types.CannotFind.String())
|
||||
}
|
||||
if table.OrderCount != 0 {
|
||||
return fmt.Errorf(types.StillInUse.String())
|
||||
}
|
||||
err = c.orm.Delete(&table).Error
|
||||
if err != nil {
|
||||
return fmt.Errorf(types.CannotDelete.String())
|
||||
}
|
||||
return nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue