zadmin/database/machine.go
2024-12-14 15:45:40 +01:00

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
}