Files
pcinv/data.go

125 lines
2.7 KiB
Go

package main
import (
"fmt"
"gitea.seeseepuff.be/seeseemelk/mysqlite"
)
func (a *App) getAllTypes(column, table string) ([]string, error) {
var types []string
var err error
for row := range a.db.Query(fmt.Sprintf("SELECT %s FROM %s GROUP BY %s ORDER BY %s ASC", column, table, column, column)).Range(&err) {
var name string
err := row.Scan(&name)
if err != nil {
return nil, err
}
types = append(types, name)
}
return types, err
}
func (a *App) GetAllBrands() ([]string, error) {
return a.getAllTypes("brand", "assets")
}
func (a *App) GetAllRamTypes() ([]string, error) {
return a.getAllTypes("type", "info_ram")
}
func (a *App) GetAllHddTypes() ([]string, error) {
return a.getAllTypes("type", "info_hdd")
}
func (a *App) GetAllHddFormFactors() ([]string, error) {
return a.getAllTypes("form_factor", "info_hdd")
}
func (a *App) GetAllHddConnections() ([]string, error) {
return a.getAllTypes("connection", "info_hdd")
}
func (a *App) GetAllHddSpeeds() ([]string, error) {
return a.getAllTypes("rpm", "info_hdd")
}
func (a *App) GetAllGroups(vm *CreateDeviceVM) error {
var err error
//vm.AssetBrands, err = a.GetAllBrands()
//if err != nil {
// return err
//}
//
//vm.RamTypes, err = a.GetAllRamTypes()
//if err != nil {
// return err
//}
//
//vm.HddTypes, err = a.GetAllHddTypes()
//if err != nil {
// return err
//}
//
//vm.HddFormFactors, err = a.GetAllHddFormFactors()
//if err != nil {
// return err
//}
//
//vm.HddFormFactors, err = a.GetAllHddConnections()
//if err != nil {
// return err
//}
//
//vm.HddRpms, err = a.GetAllHddSpeeds()
if err != nil {
return err
}
return nil
}
func (a *App) GetAllTypes() ([]string, error) {
var types []string
var err error
for row := range a.db.Query("SELECT type FROM assets GROUP BY type ORDER BY type ASC").Range(&err) {
var name string
err := row.Scan(&name)
if err != nil {
return nil, err
}
types = append(types, name)
}
return types, err
}
func (a *App) GetAssetCount() (int, error) {
var count int
err := a.db.Query("SELECT COUNT(*) FROM assets").ScanSingle(&count)
return count, err
}
func (a *App) GetBrandCount() (int, error) {
var count int
err := a.db.Query("SELECT COUNT(DISTINCT brand) FROM assets").ScanSingle(&count)
return count, err
}
func (a *App) GetTotalRamCapacity() (int, error) {
var capacity int
err := a.db.Query("SELECT SUM(capacity) FROM info_ram").ScanSingle(&capacity)
return capacity, err
}
func (a *App) DeleteAsset(tx *mysqlite.Tx, qr int) error {
err := tx.Query("DELETE FROM assets WHERE qr=?").Bind(qr).Exec()
if err != nil {
return err
}
err = tx.Query("DELETE FROM info_ram WHERE asset=?").Bind(qr).Exec()
if err != nil {
return err
}
return nil
}