79 lines
1.8 KiB
Go
79 lines
1.8 KiB
Go
package mapper
|
|
|
|
import (
|
|
"wm-backend/internal/models"
|
|
db "wm-backend/sqlc_gen"
|
|
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
func timestampToTime(t pgtype.Timestamptz) string {
|
|
if !t.Valid {
|
|
return ""
|
|
}
|
|
return t.Time.String()
|
|
}
|
|
|
|
func ToDomainInvoice(r db.Invoice) *models.Invoice {
|
|
return &models.Invoice{
|
|
ID: r.ID,
|
|
InvoiceCode: r.InvoiceCode,
|
|
Type: string(r.Type),
|
|
Status: string(r.Status),
|
|
InvoiceConfigID: r.InvoiceConfigID.Int64,
|
|
TotalItems: r.TotalItems,
|
|
Note: r.Note.String,
|
|
CreatedBy: r.CreatedBy.String,
|
|
ApprovedBy: r.ApprovedBy.String,
|
|
CompletedAt: r.CompletedAt.Time,
|
|
CreatedAt: r.CreatedAt,
|
|
UpdatedAt: r.UpdatedAt,
|
|
Metadata: r.Metadata,
|
|
}
|
|
}
|
|
|
|
func ToModelInvoice(r *models.Invoice) *db.CreateInvoiceParams {
|
|
return &db.CreateInvoiceParams{
|
|
Type: db.InvoiceTypeEnum(r.Type),
|
|
Status: db.InvoiceStatusEnum(r.Status),
|
|
InvoiceConfigID: pgtype.Int8{
|
|
Int64: r.InvoiceConfigID,
|
|
Valid: r.InvoiceConfigID != 0,
|
|
},
|
|
TotalItems: r.TotalItems,
|
|
Note: pgtype.Text{
|
|
String: r.Note,
|
|
Valid: r.Note != "",
|
|
},
|
|
CreatedBy: pgtype.Text{
|
|
String: r.CreatedBy,
|
|
Valid: r.CreatedBy != "",
|
|
},
|
|
ApprovedBy: pgtype.Text{
|
|
String: r.ApprovedBy,
|
|
Valid: r.ApprovedBy != "",
|
|
},
|
|
CreatedAt: r.CreatedAt,
|
|
Metadata: r.Metadata,
|
|
}
|
|
}
|
|
|
|
func ToUpdateModelInvoice(r *models.Invoice) *db.UpdateInvoiceParams {
|
|
return &db.UpdateInvoiceParams{
|
|
Type: db.InvoiceTypeEnum(r.Type),
|
|
Status: db.InvoiceStatusEnum(r.Status),
|
|
InvoiceConfigID: pgtype.Int8{
|
|
Int64: r.InvoiceConfigID,
|
|
Valid: r.InvoiceConfigID != 0,
|
|
},
|
|
TotalItems: r.TotalItems,
|
|
Note: pgtype.Text{
|
|
String: r.Note,
|
|
Valid: r.Note != "",
|
|
},
|
|
Metadata: r.Metadata,
|
|
UpdatedAt: r.UpdatedAt,
|
|
ID: r.ID,
|
|
}
|
|
}
|