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 }