CRUD
Pada bab ini kita akan melengkapi method Users.Create, Users.View, Users.Update dan Users.Delete
Create
Karena membutuhkan beberapa validasi dan hashing password, create user akan ditangani menggunakan usecase.
Pertama kita siapkan model-nya terlebih dahulu. Edit file models/user.go dan tambahkan method Create.
// Create new user
func (u *User) Create(db *sql.DB) error {
const query = `
INSERT INTO users (username, password, email, is_active, created, updated)
VALUES (?, ?, ?, 0, NOW(), NOW())
`
stmt, err := db.Prepare(query)
if err != nil {
return err
}
defer stmt.Close()
res, err := stmt.Exec(u.Username, u.Password, u.Email)
if err != nil {
return err
}
id, err := res.LastInsertId()
if err != nil {
return err
}
u.ID = uint64(id)
return nil
}Untuk response kita sudah ada file payloads/response/user_response.go dan tidak perlu ada perubahan. Namun yang kita perlukan adalah payload untuk menangani request. Buatlah file payloads/request/user_request.go yang berfungsi untuk menerima json body dari request, kemudian mengconvertnya menjadi model.
Selanjutnya kita buat file usecases/user_usecase.go untuk interaksi dan validasi pembuatan user baru.
Terakhir, ubah method Users.Create di file controllers/users.go
Read
Tambahkan method
func (u *User) Get(db *sql.DB) errorpada file models/user.go
Ubah method View pada file controllers/users.go menjadi
Update
Tambahkan method
func (u *User) Update(db *sql.DB) errorpada file models/user.go
Tambahkan
type UserRequest struct{}pada file payloads/request/user_request.go dan method Transform untuk reference UserRequest
Ubah method Update pada file controllers/users.go
Delete
Tambahkan method
func (u *User) Delete(db *sql.DB) errorpada file models/user.go
Ubah method Delete pada file controllers/users.go
Last updated
Was this helpful?