Advertisement
erkayes935

transaction_repository

Dec 29th, 2024
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 2.64 KB | None | 0 0
  1. package repository
  2.  
  3. import (
  4.     "challenge-goapi/model"
  5.     "database/sql"
  6. )
  7.  
  8. type TransactionRepository interface {
  9.     Create(billDetail model.BillDetail, billDetails model.BillDetails) (model.BillDetail, model.BillDetails, error)
  10.     List() ([]model.BillDetail, error)
  11.     Get(id string) (model.BillDetail, error)
  12. }
  13.  
  14. type transactionRepository struct {
  15.     db *sql.DB
  16. }
  17.  
  18. func (t *transactionRepository) Create(billDetail model.BillDetail, billDetails model.BillDetails) (model.BillDetail, model.BillDetails, error) {
  19.     var transactionId, billdetailsId string
  20.     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)
  21.     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)
  22.     billDetail.Id = transactionId
  23.     billDetails.Id = billdetailsId
  24.     if err != nil {
  25.         return model.BillDetail{}, model.BillDetails{}, err
  26.     }
  27.     return billDetail, billDetails, nil
  28.  
  29. }
  30.  
  31. func (t *transactionRepository) Get(id string) (model.BillDetail, error) {
  32.     var transaction model.BillDetail
  33.     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)
  34.     if err != nil {
  35.         return model.BillDetail{}, err
  36.     }
  37.  
  38.     return transaction, nil
  39. }
  40.  
  41. func (t *transactionRepository) List() ([]model.BillDetail, error) {
  42.     var transactions []model.BillDetail
  43.     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")
  44.     if err != nil {
  45.         return nil, err
  46.     }
  47.  
  48.     for rows.Next() {
  49.         var transaction model.BillDetail
  50.         err := rows.Scan(&transaction.Id, &transaction.BillDate, &transaction.EntryDate, &transaction.FinishDate)
  51.         if err != nil {
  52.             return nil, err
  53.         }
  54.         transactions = append(transactions, transaction)
  55.     }
  56.  
  57.     return transactions, nil
  58. }
  59.  
  60. func NewTransactionRepository(db *sql.DB) TransactionRepository {
  61.     return &transactionRepository{db: db}
  62. }
  63.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement