Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package repository
- import (
- "challenge-goapi/model"
- "database/sql"
- )
- type TransactionRepository interface {
- Create(billDetail model.BillDetail, billDetails model.BillDetails) (model.BillDetail, model.BillDetails, error)
- List() ([]model.BillDetail, error)
- Get(id string) (model.BillDetail, error)
- }
- type transactionRepository struct {
- db *sql.DB
- }
- func (t *transactionRepository) Create(billDetail model.BillDetail, billDetails model.BillDetails) (model.BillDetail, model.BillDetails, error) {
- var transactionId, billdetailsId string
- err := t.db.QueryRow("INSERT INTO transaction (id, billdate, entrydate, finishdate, employeeid, customerid) VALUES ($1, $2, $3, $4, $5, $6) RETURNING id", billDetail.Id, billDetail.BillDate, billDetail.EntryDate, billDetail.FinishDate, billDetail.EmployeeId, billDetail.CustomerId).Scan(&transactionId)
- t.db.QueryRow("INSERT INTO billdetails (id, billid, productid, productprice, qty) VALUES ($1, $2, $3, $4, $5) RETURNING id", billDetails.Id, billDetails.BillId, billDetails.ProductId, billDetails.ProductPrice, billDetails.Qty).Scan(&billdetailsId)
- billDetail.Id = transactionId
- billDetails.Id = billdetailsId
- if err != nil {
- return model.BillDetail{}, model.BillDetails{}, err
- }
- return billDetail, billDetails, nil
- }
- func (t *transactionRepository) Get(id string) (model.BillDetail, error) {
- var transaction model.BillDetail
- err := t.db.QueryRow("SELECT transaction.id, billdate, entrydate, finishdate FROM transaction join employee on employee.id = transaction.employeeid join customer on customer.id = transaction.customerid join billdetails on billdetails.billid = transaction.id WHERE id = $1", id).Scan(&transaction.Id, &transaction.BillDate, &transaction.EntryDate, &transaction.FinishDate)
- if err != nil {
- return model.BillDetail{}, err
- }
- return transaction, nil
- }
- func (t *transactionRepository) List() ([]model.BillDetail, error) {
- var transactions []model.BillDetail
- rows, err := t.db.Query("SELECT transaction.id, billdate, entrydate, finishdate FROM transaction join employee on employee.id = transaction.employeeid join customer on customer.id = transaction.customerid join billdetails on billdetails.billid = transaction.id")
- if err != nil {
- return nil, err
- }
- for rows.Next() {
- var transaction model.BillDetail
- err := rows.Scan(&transaction.Id, &transaction.BillDate, &transaction.EntryDate, &transaction.FinishDate)
- if err != nil {
- return nil, err
- }
- transactions = append(transactions, transaction)
- }
- return transactions, nil
- }
- func NewTransactionRepository(db *sql.DB) TransactionRepository {
- return &transactionRepository{db: db}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement