71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
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
|
|
}
|