feat: send proper status when integration not found

This commit is contained in:
Fritz Heiden 2025-03-20 20:02:36 +01:00
parent a13a21a67d
commit 0ade58d2f2
3 changed files with 31 additions and 4 deletions

View File

@ -122,6 +122,15 @@ func (db *DeviceDatabase) CreateIntegration(name, token string) (string, error)
return id, nil
}
func (db *DeviceDatabase) IntegrationIdExists(id string) (bool, error) {
var exists bool
err := db.Connection.QueryRow("SELECT EXISTS(SELECT 1 FROM integrations WHERE id = ?)", id).Scan(&exists)
if err != nil {
return false, err
}
return exists, nil
}
func (db *DeviceDatabase) GetIntegration(id string) (*Integration, error) {
var integration Integration
err := db.Connection.QueryRow("SELECT id, name FROM integrations WHERE id = ?", id).Scan(&integration.ID, &integration.Name)

View File

@ -146,6 +146,14 @@ func (dm *DeviceManager) DeleteIntegration(id string) error {
return error
}
func (dm *DeviceManager) IntegrationIdExists(id string) (bool, error) {
exists, error := dm.deviceDatabase.IntegrationIdExists(id)
if error != nil {
return false, error
}
return exists, nil
}
func (dm *DeviceManager) checkCode(code string) bool {
for _, c := range dm.registrationCodes {
if c == code {

View File

@ -83,11 +83,21 @@ func (r *DeviceApiHandler) handleCreateIntegration(context echo.Context) error {
func (r *DeviceApiHandler) handleGetIntegration(context echo.Context) error {
id := context.Param("id")
integration, error := r.deviceManager.GetIntegration(id)
exists, err := r.deviceManager.IntegrationIdExists(id)
if err != nil {
SendError(500, context, fmt.Sprintf("Failed to get integration: %s", err))
return err
}
if !exists {
SendError(404, context, fmt.Sprintf("integration with id %s does not exist", id))
return err
}
if error != nil {
SendError(500, context, fmt.Sprintf("Failed to get integration: %s", error))
return error
integration, err := r.deviceManager.GetIntegration(id)
if err != nil {
SendError(500, context, fmt.Sprintf("Failed to get integration: %s", err))
return err
}
integrationData := struct {