to: bill api

This commit is contained in:
clz 2023-05-11 21:00:29 +08:00
parent 2d77947872
commit 7862701a26
5 changed files with 109 additions and 21 deletions

View File

@ -31,9 +31,9 @@ type BillRepository interface {
} }
type BillService interface { type BillService interface {
FetchBills(ctx context.Context, date BDate) (*[]Bill, error) GetBills(ctx context.Context, date BDate) (*[]Bill, error)
FetchBillByID(ctx context.Context, id int) (*Bill, error) GetBillByID(ctx context.Context, id int) (*Bill, error)
BuildBill(ctx context.Context, bill *Bill) error CreateBill(ctx context.Context, bill *Bill) error
ModifyBill(ctx context.Context, bill *Bill) error UpdateBill(ctx context.Context, bill *Bill) error
DestroyBill(ctx context.Context, id int) error DeleteBill(ctx context.Context, id int) error
} }

87
internal/bill/handle.go Normal file
View File

@ -0,0 +1,87 @@
package bill
import (
"context"
"github.com/gofiber/fiber/v2"
)
type BillHandler struct {
billService BillService
}
func NewBillHandler(billRoute fiber.Router, bs BillService) {
handler := &BillHandler{
billService: bs,
}
billRoute.Get("/", handler.getBills)
billRoute.Post("/", handler.createBill)
billRoute.Put("/", handler.updateBill)
billRoute.Delete("/", handler.deleteBill)
}
func (h *BillHandler) getBills(c *fiber.Ctx) error {
customContext, cancel := context.WithCancel(context.Background())
defer cancel()
// TODO()
bills, err := h.billService.GetBills(customContext, BDate{})
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(&fiber.Map{
"status": "fail",
"message": err.Error(),
})
}
return c.Status(fiber.StatusOK).JSON(&fiber.Map{
"status": "success",
"data": bills,
})
}
func (h *BillHandler) createBill(c *fiber.Ctx) error {
customContext, cancel := context.WithCancel(context.Background())
defer cancel()
// TODO(): create bill
err := h.billService.CreateBill(customContext, &Bill{})
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(&fiber.Map{
"status": "fail",
"message": err.Error(),
})
}
return c.Status(fiber.StatusOK).JSON(&fiber.Map{
"status": "success",
})
}
func (h *BillHandler) updateBill(c *fiber.Ctx) error {
customContext, cancel := context.WithCancel(context.Background())
defer cancel()
// TODO(): update data
err := h.billService.UpdateBill(customContext, &Bill{})
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(&fiber.Map{
"status": "fail",
"message": err.Error(),
})
}
return c.Status(fiber.StatusOK).JSON(&fiber.Map{
"status": "success",
})
}
func (h *BillHandler) deleteBill(c *fiber.Ctx) error {
customContext, cancel := context.WithCancel(context.Background())
defer cancel()
// TODO(): delete data id
err := h.billService.DeleteBill(customContext, 0)
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(&fiber.Map{
"status": "fail",
"message": err.Error(),
})
}
return c.Status(fiber.StatusOK).JSON(&fiber.Map{
"status": "success",
})
}

View File

@ -17,7 +17,7 @@ type mariaDBRepository struct {
mariadb *sql.DB mariadb *sql.DB
} }
func newMariaDBRepository(mariadb *sql.DB) BillRepository { func NewMariaDBRepository(mariadb *sql.DB) BillRepository {
return &mariaDBRepository{ return &mariaDBRepository{
mariadb: mariadb, mariadb: mariadb,
} }

View File

@ -20,7 +20,7 @@ func NewBillService(r BillRepository) BillService {
// - date is {year, month} when return a month bills // - date is {year, month} when return a month bills
// - date is {year} when return a year bills // - date is {year} when return a year bills
// - date is {} when return all bills // - date is {} when return all bills
func (b *billService) FetchBills(ctx context.Context, date BDate) (*[]Bill, error) { func (b *billService) GetBills(ctx context.Context, date BDate) (*[]Bill, error) {
if date.Year == 0 && (date.Month != 0 || date.Day != 0) { if date.Year == 0 && (date.Month != 0 || date.Day != 0) {
date.Year = time.Now().Year() date.Year = time.Now().Year()
} else if date.Month == 0 && date.Day != 0 { } else if date.Month == 0 && date.Day != 0 {
@ -38,18 +38,18 @@ func (b *billService) FetchBills(ctx context.Context, date BDate) (*[]Bill, erro
} }
} }
func (b *billService) FetchBillByID(ctx context.Context, id int) (*Bill, error) { func (b *billService) GetBillByID(ctx context.Context, id int) (*Bill, error) {
return b.billRepository.GetBillByID(ctx, id) return b.billRepository.GetBillByID(ctx, id)
} }
func (b *billService) BuildBill(ctx context.Context, bill *Bill) error { func (b *billService) CreateBill(ctx context.Context, bill *Bill) error {
return b.billRepository.CreateBill(ctx, bill) return b.billRepository.CreateBill(ctx, bill)
} }
func (b *billService) ModifyBill(ctx context.Context, bill *Bill) error { func (b *billService) UpdateBill(ctx context.Context, bill *Bill) error {
return b.billRepository.UpdateBill(ctx, bill) return b.billRepository.UpdateBill(ctx, bill)
} }
func (b *billService) DestroyBill(ctx context.Context, id int) error { func (b *billService) DeleteBill(ctx context.Context, id int) error {
return b.billRepository.DeleteBill(ctx, id) return b.billRepository.DeleteBill(ctx, id)
} }

View File

@ -1,10 +1,8 @@
package infrastructure package infrastructure
import ( import (
"bill-go-fiber/internal/auth" "bill-go-fiber/internal/bill"
"bill-go-fiber/internal/city"
"bill-go-fiber/internal/misc" "bill-go-fiber/internal/misc"
"bill-go-fiber/internal/user"
"fmt" "fmt"
"log" "log"
@ -53,18 +51,21 @@ func Run() {
app.Use(requestid.New()) app.Use(requestid.New())
// Create repositories. // Create repositories.
cityRepository := city.NewCityRepository(mariadb) //cityRepository := city.NewCityRepository(mariadb)
userRepository := user.NewUserRepository(mariadb) //userRepository := user.NewUserRepository(mariadb)
billRepository := bill.NewMariaDBRepository(mariadb)
// Create all of our services. // Create all of our services.
cityService := city.NewCityService(cityRepository) //cityService := city.NewCityService(cityRepository)
userService := user.NewUserService(userRepository) //userService := user.NewUserService(userRepository)
billService := bill.NewBillService(billRepository)
// Prepare our endpoints for the API. // Prepare our endpoints for the API.
misc.NewMiscHandler(app.Group("/api/v1")) misc.NewMiscHandler(app.Group("/api/v1"))
auth.NewAuthHandler(app.Group("/api/v1/auth")) //auth.NewAuthHandler(app.Group("/api/v1/auth"))
city.NewCityHandler(app.Group("/api/v1/cities"), cityService) //city.NewCityHandler(app.Group("/api/v1/cities"), cityService)
user.NewUserHandler(app.Group("/api/v1/users"), userService) //user.NewUserHandler(app.Group("/api/v1/users"), userService)
bill.NewBillHandler(app.Group("/api/v1/bills"), billService)
// Prepare an endpoint for 'Not Found'. // Prepare an endpoint for 'Not Found'.
app.All("*", func(c *fiber.Ctx) error { app.All("*", func(c *fiber.Ctx) error {