adding dboverview route, fixing add new location and add new room

This commit is contained in:
2022-04-09 22:27:26 -04:00
parent 25deaf43c8
commit c79dc69bb0
10 changed files with 274 additions and 53 deletions

View File

@@ -3,6 +3,7 @@ package main
import (
"fmt"
"github.com/asdine/storm/v3"
"github.com/gofiber/fiber/v2"
)
@@ -20,3 +21,63 @@ func (s *Server) SearchAllHandler(c *fiber.Ctx) error {
return c.Status(fiber.StatusOK).JSON(results)
}
// GetDatabaseOverview manually queries the DB to get some details about the database
func (s *Server) GetDatabaseOverview(c *fiber.Ctx) error {
locations := []Location{}
err := s.Database.AllByIndex("ID", &locations, storm.Reverse())
if err != nil {
s.Log.Error().Msgf("Failed to get last added location: %s ", err)
return c.Status(fiber.StatusInternalServerError).SendString(fmt.Sprintf("Database failure fetching last location! error: %s", err))
}
var lastAddedLocation *Location
if len(locations) > 0 {
lastAddedLocation = &locations[0]
}
rooms := []Room{}
err = s.Database.AllByIndex("ID", &rooms, storm.Reverse())
if err != nil {
s.Log.Error().Msgf("Failed to get all rooms: %s ", err)
return c.Status(fiber.StatusInternalServerError).SendString(fmt.Sprintf("Database failure fetching all rooms! error: %s", err))
}
var lastAddedRoom *Room
if len(rooms) > 0 {
lastAddedRoom = &rooms[0]
}
cabinets := []Cabinet{}
err = s.Database.AllByIndex("ID", &cabinets, storm.Reverse())
if err != nil {
s.Log.Error().Msgf("Failed to get all cabinets by ID: %s ", err)
return c.Status(fiber.StatusInternalServerError).SendString(fmt.Sprintf("Database failure fetching all cabinets! error: %s", err))
}
var lastAddedCabinet *Cabinet
if len(cabinets) > 0 {
lastAddedCabinet = &cabinets[0]
}
items := []Item{}
err = s.Database.AllByIndex("ID", &items, storm.Reverse())
if err != nil {
s.Log.Error().Msgf("Failed to get all items by ID: %s ", err)
return c.Status(fiber.StatusInternalServerError).SendString(fmt.Sprintf("Database failure fetching all items! error: %s", err))
}
var lastAddedItem *Item
if len(items) > 0 {
lastAddedItem = &items[0]
}
dbOverview := DatabaseOverview{
NumLocations: len(locations),
LastAddedLocation: lastAddedLocation,
NumRooms: len(rooms),
LastAddedRoom: lastAddedRoom,
NumCabinets: len(cabinets),
LastAddedCabinet: lastAddedCabinet,
NumItems: len(items),
LastAddedItem: lastAddedItem,
}
return c.Status(fiber.StatusOK).JSON(dbOverview)
}