Files
warehouse-management-BE/internal/mapper/invoice_mapper.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,
}
}