59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
package database
|
|
|
|
import (
|
|
"git.mziesel.nl/mans/zadmin/internal/models"
|
|
"github.com/jmoiron/sqlx"
|
|
"github.com/oklog/ulid/v2"
|
|
)
|
|
|
|
func CreateMachine(db *sqlx.DB, m *models.Machine) error {
|
|
query := "INSERT INTO machine (machine_name, os_type, os_arch) VALUES ($1, $2, $3)"
|
|
_, err := db.Exec(query, m.MachineName, m.OsType, m.OsArch)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func GetMachineByID(db *sqlx.DB, id ulid.ULID) (*models.Machine, error) {
|
|
query := "SELECT * FROM machine WHERE id = $1"
|
|
var m models.Machine
|
|
err := db.Get(&m, query, id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &m, nil
|
|
}
|
|
|
|
func GetAllMachines(db *sqlx.DB) ([]models.Machine, error) {
|
|
query := "SELECT * FROM machine"
|
|
var machines []models.Machine
|
|
err := db.Select(&machines, query)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return machines, nil
|
|
}
|
|
|
|
func DeleteMachine(db *sqlx.DB, id int) (int64, error) {
|
|
tx, err := db.Begin()
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
query := "DELETE FROM machine WHERE id = $1"
|
|
result, err := tx.Exec(query, id)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
return 0, err
|
|
}
|
|
rowsAffected, err := result.RowsAffected()
|
|
if err != nil {
|
|
tx.Rollback()
|
|
return 0, err
|
|
}
|
|
if err := tx.Commit(); err != nil {
|
|
return 0, err
|
|
}
|
|
return rowsAffected, nil
|
|
}
|