fix: use simple slices instead of []*T
This commit is contained in:
parent
de7c6f7223
commit
716a58d44c
13
README.md
13
README.md
@ -564,3 +564,16 @@ querier.
|
|||||||
Since this repo layer is just a wrapping layer between the `sqlc.models` and
|
Since this repo layer is just a wrapping layer between the `sqlc.models` and
|
||||||
my own models, I can extract the conversion part to functions and test them.
|
my own models, I can extract the conversion part to functions and test them.
|
||||||
I'm not testing the whole thing but I test what I can.
|
I'm not testing the whole thing but I test what I can.
|
||||||
|
|
||||||
|
### 2024/10/24
|
||||||
|
|
||||||
|
When writing the tests. I am asking myself the differences between `[]T`,
|
||||||
|
`[]*T` and `*[]T`.
|
||||||
|
|
||||||
|
`*[]T` is simple, it is a reference to the original slice. So modifying it
|
||||||
|
means modifying the original slice.
|
||||||
|
|
||||||
|
But between `[]*T` and `[]T`, the only difference that I see (pointed out by
|
||||||
|
`ChatGPT`) is how the memory is allocated. With `[]T` it might be better for
|
||||||
|
the GC to deal with the memory free. I thing for my project I will stick to
|
||||||
|
`[]T`.
|
||||||
|
@ -62,7 +62,7 @@ func convToEventRetrieved(eventDTO *sqlc.GetEventByIDRow) (*model.EventRetrieved
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var users []*model.UserBaseRetrieved
|
var users []model.UserBaseRetrieved
|
||||||
err = json.Unmarshal(eventDTO.Users, &users)
|
err = json.Unmarshal(eventDTO.Users, &users)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Unexpected
|
// Unexpected
|
||||||
@ -99,8 +99,8 @@ func (e *eventRepository) GetByID(ctx context.Context, eventID int) (*model.Even
|
|||||||
return convToEventRetrieved(&eventDTO)
|
return convToEventRetrieved(&eventDTO)
|
||||||
}
|
}
|
||||||
|
|
||||||
func convToEventList(eventsDTO []sqlc.ListEventsByUserIDRow) ([]*model.EventListRetrieved, error) {
|
func convToEventList(eventsDTO []sqlc.ListEventsByUserIDRow) ([]model.EventListRetrieved, error) {
|
||||||
var events []*model.EventListRetrieved
|
var events []model.EventListRetrieved
|
||||||
|
|
||||||
for _, evDTO := range eventsDTO {
|
for _, evDTO := range eventsDTO {
|
||||||
var owner model.UserBaseRetrieved
|
var owner model.UserBaseRetrieved
|
||||||
@ -110,7 +110,7 @@ func convToEventList(eventsDTO []sqlc.ListEventsByUserIDRow) ([]*model.EventList
|
|||||||
log.ErrorLog("json unmarshal error", "err", err)
|
log.ErrorLog("json unmarshal error", "err", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
ev := &model.EventListRetrieved{
|
ev := model.EventListRetrieved{
|
||||||
ID: int(evDTO.ID),
|
ID: int(evDTO.ID),
|
||||||
Name: evDTO.Name,
|
Name: evDTO.Name,
|
||||||
Description: evDTO.Description.String,
|
Description: evDTO.Description.String,
|
||||||
@ -128,7 +128,7 @@ func convToEventList(eventsDTO []sqlc.ListEventsByUserIDRow) ([]*model.EventList
|
|||||||
func (e *eventRepository) ListEventsByUserID(
|
func (e *eventRepository) ListEventsByUserID(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
userID int,
|
userID int,
|
||||||
) ([]*model.EventListRetrieved, error) {
|
) ([]model.EventListRetrieved, error) {
|
||||||
eventsDTO, err := e.queries.ListEventsByUserID(ctx, int32(userID))
|
eventsDTO, err := e.queries.ListEventsByUserID(ctx, int32(userID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ErrorLog("query error", "err", err)
|
log.ErrorLog("query error", "err", err)
|
||||||
|
@ -59,7 +59,7 @@ func TestConvToEventRetrieved(t *testing.T) {
|
|||||||
FirstName: "owner",
|
FirstName: "owner",
|
||||||
LastName: "owner",
|
LastName: "owner",
|
||||||
},
|
},
|
||||||
Users: []*model.UserBaseRetrieved{
|
Users: []model.UserBaseRetrieved{
|
||||||
{
|
{
|
||||||
ID: 1,
|
ID: 1,
|
||||||
FirstName: "owner",
|
FirstName: "owner",
|
||||||
@ -91,7 +91,7 @@ func TestConvToEventList(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
want := []*model.EventListRetrieved{
|
want := []model.EventListRetrieved{
|
||||||
{
|
{
|
||||||
ID: 123,
|
ID: 123,
|
||||||
Name: "event",
|
Name: "event",
|
||||||
|
@ -57,7 +57,7 @@ type EventInfoResponse struct {
|
|||||||
CreatedAt time.Time
|
CreatedAt time.Time
|
||||||
UpdatedAt time.Time
|
UpdatedAt time.Time
|
||||||
|
|
||||||
Users []*UserBaseResponse
|
Users []UserBaseResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
// }}}
|
// }}}
|
||||||
@ -93,7 +93,7 @@ type EventRetrieved struct {
|
|||||||
Name string
|
Name string
|
||||||
Description string
|
Description string
|
||||||
|
|
||||||
Users []*UserBaseRetrieved
|
Users []UserBaseRetrieved
|
||||||
|
|
||||||
TotalAmount Money
|
TotalAmount Money
|
||||||
DefaultCurrency Currency
|
DefaultCurrency Currency
|
||||||
@ -121,9 +121,9 @@ type Event struct {
|
|||||||
Description string
|
Description string
|
||||||
|
|
||||||
// lazy get using participation join
|
// lazy get using participation join
|
||||||
Users []*UserDO
|
Users []UserDO
|
||||||
// lazy get
|
// lazy get
|
||||||
Expenses []*Expense
|
Expenses []Expense
|
||||||
|
|
||||||
TotalAmount Money
|
TotalAmount Money
|
||||||
DefaultCurrency Currency
|
DefaultCurrency Currency
|
||||||
|
@ -53,7 +53,26 @@ type ExpenseGetResponse Expense
|
|||||||
// }}}
|
// }}}
|
||||||
// {{{ Retrieved
|
// {{{ Retrieved
|
||||||
|
|
||||||
type ExpensesListRetrieved ExpensesListResponse
|
type (
|
||||||
|
ExpensesListRetrieved ExpensesListResponse
|
||||||
|
ExpenseRetrieved Expense
|
||||||
|
)
|
||||||
|
|
||||||
|
type PaymentRetrieved struct {
|
||||||
|
PayerID int `json:"payer_id"`
|
||||||
|
PayerFirstName string `json:"payer_first_name"`
|
||||||
|
PayerLastName string `json:"payer_last_name"`
|
||||||
|
Amount int `json:"amount"`
|
||||||
|
Currency string `json:"currency"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type BenefitRetrieved struct {
|
||||||
|
RecipientID int `json:"recipient_id"`
|
||||||
|
RecipientFirstName string `json:"recipient_first_name"`
|
||||||
|
RecipientLastName string `json:"recipient_last_name"`
|
||||||
|
Amount int `json:"amount"`
|
||||||
|
Currency string `json:"currency"`
|
||||||
|
}
|
||||||
|
|
||||||
// }}}
|
// }}}
|
||||||
// {{{ Entity
|
// {{{ Entity
|
||||||
|
@ -37,7 +37,7 @@ type EventRepository interface {
|
|||||||
GetByID(ctx context.Context, eventID int) (*model.EventRetrieved, error)
|
GetByID(ctx context.Context, eventID int) (*model.EventRetrieved, error)
|
||||||
|
|
||||||
// related to events of a user
|
// related to events of a user
|
||||||
ListEventsByUserID(ctx context.Context, userID int) ([]*model.EventListRetrieved, error)
|
ListEventsByUserID(ctx context.Context, userID int) ([]model.EventListRetrieved, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type ExpenseRepository interface {
|
type ExpenseRepository interface {
|
||||||
|
Loading…
Reference in New Issue
Block a user