CRUD Operations
Dokumentasi generic CRUD (Create, Read, Update, Delete) functions.
Create
Save
Menyimpan record baru ke database.
func Save(model interface{}) interface{}
Penggunaan:
user := models.User{
Name: "John Doe",
Email: "john@example.com",
}
err := repository.Save(&user)
if err != nil {
// Handle error
}
// user.ID sudah ter-populate setelah save
Upsert
Insert atau Update berdasarkan conflict pada kolom id.
func Upsert(model interface{}) error
Penggunaan:
user := models.User{
ID: existingID, // Jika exists, akan update
Name: "Updated Name",
Email: "updated@example.com",
}
err := repository.Upsert(&user)
SQL Generated:
INSERT INTO users (id, name, email)
VALUES ($1, $2, $3)
ON CONFLICT (id) DO UPDATE SET
name = $2,
email = $3
Read
Get
Mengambil semua records.
func Get(model interface{}) interface{}
Penggunaan:
var users []models.User
err := repository.Get(&users)
GetOne
Mengambil single record (first).
func GetOne(model interface{}) interface{}
Penggunaan:
var user models.User
err := repository.GetOne(&user)
GetById
Mengambil record berdasarkan ID.
func GetById(model interface{}, id any) error
Penggunaan:
var user models.User
err := repository.GetById(&user, "550e8400-e29b-41d4-a716-446655440000")
if err != nil {
// User not found or error
}
GetOneNew
Mengambil record berdasarkan kolom dan value tertentu.
func GetOneNew(model interface{}, column string, value string) interface{}
Penggunaan:
var user models.User
err := repository.GetOneNew(&user, "email", "john@example.com")
GetWithFilter
Mengambil records dengan filter is_deleted = false.
func GetWithFilter(model interface{}) interface{}
Penggunaan:
var users []models.User
err := repository.GetWithFilter(&users)
// Hanya return users yang belum di-delete
GetByNoPegawai
Mengambil record berdasarkan nomor pegawai.
func GetByNoPegawai(model interface{}, no_pegawai any) error
Penggunaan:
var pengguna models.Pengguna
err := repository.GetByNoPegawai(&pengguna, "123456")
CheckByNoPegawai
Mengecek apakah record dengan nomor pegawai exists.
func CheckByNoPegawai(model interface{}, no_pegawai any) bool
Penggunaan:
var pengguna models.Pengguna
exists := repository.CheckByNoPegawai(&pengguna, "123456")
if exists {
// Pengguna sudah terdaftar
}
CountDataByNoPegawai
Menghitung jumlah record berdasarkan nomor pegawai.
func CountDataByNoPegawai(model interface{}, no_pegawai any) int
Penggunaan:
var pengguna models.Pengguna
count := repository.CountDataByNoPegawai(&pengguna, "123456")
Update
Update
Update record (menggunakan Save).
func Update(model interface{}) error
Penggunaan:
var user models.User
repository.GetById(&user, id)
user.Name = "Updated Name"
err := repository.Update(&user)
SetBy
Update kolom tertentu dengan UserID dari token.
func SetBy(id, columnName, tableName, auth string) interface{}
Penggunaan:
repository.SetBy(
recordID,
"updated_by",
"users",
authHeader,
)
SetByNoPegawai
Update kolom berdasarkan nomor pegawai.
func SetByNoPegawai(noPegawai, columnName, tableName, auth string) interface{}
Delete
DeleteById
Hard delete record berdasarkan ID.
func DeleteById(model interface{}, id any) interface{}
Penggunaan:
var user models.User
err := repository.DeleteById(&user, id)
Hard delete akan menghapus record secara permanen. Gunakan SoftDeleteById untuk soft delete.
SoftDeleteById
Soft delete (set is_deleted = true).
func SoftDeleteById(model interface{}) error
Penggunaan:
var user models.User
repository.GetById(&user, id)
user.IsDeleted = true
err := repository.SoftDeleteById(&user)
BulkDeleteById
Delete multiple records berdasarkan kolom.
func BulkDeleteById(model interface{}, column string, value string) interface{}
Penggunaan:
var user models.User
err := repository.BulkDeleteById(&user, "department_id", "123")
// Delete semua users dengan department_id = 123
Summary Table
| Function | Operation | Type |
|---|---|---|
Save | Create | Single |
Upsert | Create/Update | Single |
Get | Read All | Multiple |
GetOne | Read First | Single |
GetById | Read by ID | Single |
GetOneNew | Read by Column | Single |
GetWithFilter | Read (not deleted) | Multiple |
Update | Update | Single |
SetBy | Update Column | Single |
DeleteById | Hard Delete | Single |
SoftDeleteById | Soft Delete | Single |
BulkDeleteById | Hard Delete | Multiple |