package user import ( "github.com/jmoiron/sqlx" "sismedika.com/sas/westone/types" ) type Store struct { db *sqlx.DB } func NewStore(db *sqlx.DB) *Store { return &Store{db: db} } func (s *Store) CreateUser(user types.User) error { // Start a new transaction // tx, err := s.db.BeginTxx(context.Background(), nil) // if err != nil { // return err // } // // Defer rollback to ensure the transaction is rolled back in case of an error // defer func() { // if err != nil { // tx.Rollback() // } // }() // query := `INSERT INTO users (firstName, lastName, email, password) // VALUES (:firstName, :lastName, :email, :password)` // // Using tx.NamedExec to insert the user within the transaction // _, err = tx.NamedExec(query, user) // if err != nil { // return err // } // // Commit the transaction if everything succeeded // if err = tx.Commit(); err != nil { // return err // } return nil } func (s *Store) GetUserByID(id int) (*types.User, error) { user := new(types.User) qryget := ` SELECT M_UserID, M_UserEmail, M_UserEmail as M_UserUsername, M_UserGroupDashboard, 1 as M_UserDefaultT_SampleStationID, IFNULL(M_UserFullName, "") as M_StaffName, IFNULL(M_StaffIsCourier, "N") as is_courier, IFNULL(S_SystemsAutoLogoutTime,0) as time_autologout FROM m_user JOIN m_usergroup ON M_UserM_UserGroupID = M_UserGroupID LEFT JOIN m_staff on M_UserM_StaffID = M_StaffID JOIN conf_systems ON S_SystemsIsActive = 'Y' WHERE M_UserID = ? ` if err := s.db.Get(user, qryget, id); err != nil { return nil, err } return user, nil }