[Refactoring] Toter Code, doppelte Logik und uneinheitliche Routen #58
Labels
No labels
bug
critical
database
duplicate
enhancement
help wanted
invalid
performance
question
refactoring
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Aceless/RecipePlanner#58
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Toter und ueberfluessiger Code
SpaceRepository.GetUserRoleAsyncwird nirgends aufgerufen und dupliziertEnsureUserHasRoleAsync.SpaceRepository.CreateSpaceAsync:var uuid = userId.ToString();wird nie verwendet.Dtos/SearchDtos.csgehoert zu keinem Endpunkt.RecipeRepository.CreateRecipeInSpaceundMealPlanRepository.AddEntryverwendenRETURNING *in Verbindung mitExecuteAsync, das Ergebnis wird verworfen.RecipeRepository.GetRecipeInSpaceenthaelt einen Kommentarblock, der eine Ueberlegung dokumentiert statt einer Entscheidung. AnalogMealPlanRepository.UpdateEntrymit rund 25 Zeilen offener Diskussion im Code.RecipePlannerApi.httpenthaelt noch denweatherforecast-Aufruf aus der Projektvorlage.RecipeMappingExtensions:recipe.Images.Select(...).ToList() ?? []- der Null-Coalescing-Teil ist unerreichbar, daToList()nie null liefert.Doppelte Logik
CheckSpaceAccessexistiert wortgleich inRecipeRepositoryundMealPlanRepository, inklusive des Stringvergleichsrole == "viewer". Kommt eine Rolle dazu, muss man beide Stellen finden. Vorschlag: eine gemeinsame Komponente (z. B.ISpaceAccessService) mit einem Enum statt Strings, genutzt von allen Repositories.Routen
SpaceControllerliegt unterapi/[controller], die Klasse heisstSpaceController, die Route ist also/api/Space. Alle untergeordneten Controller nutzenapi/spaces/{spaceId}/.... Im Flutter-Client steht dazu bereits ein Kommentar:Vorschlag: feste Route
[Route("api/spaces")]setzen und die App entsprechend anpassen. Ausserdem liegen die Controller teils im NamespaceRecipePlannerApi.Controller, teils inRecipePlannerApi.Controllers- vereinheitlichen.Nebenpunkt
app.UseHttpsRedirection()steht inProgram.cs, waehrend der Container nur HTTP auf 8080 bereitstellt und die Apphttp://192.168.1.104:5261anspricht. Entweder TLS am Reverse Proxy terminieren und die Weiterleitung entfernen, oder HTTPS durchgaengig konfigurieren.Erledigt.
Routen:
SpaceControllerliegt jetzt fest aufapi/spaces.api/spacebleibt als zweites Route-Attribut erhalten, damit bereits ausgelieferte App-Versionen weiterlaufen. Der Kommentar im Code sagt, dass der Alias entfallen kann, sobald keine alten Clients mehr im Umlauf sind. Die App muss dafür nicht angepasst werden.Namespaces: alle Controller liegen jetzt unter
RecipePlannerApi.Controllers.Doppelte Logik:
CheckSpaceAccessgab es wortgleich in zwei Repositories. Beide nutzen jetztISpaceAccessServicemit einer expliziten Rangfolge statt Stringvergleichen.Entfernt:
GetUserRoleAsync, die ungenutzte Variableuuid, das wirkungsloseRETURNING *beiExecuteAsync, die unerreichbaren?? []in den Mapping-Extensions, die rund 25 Zeilen offener Diskussion inUpdateEntry, derweatherforecast-Aufruf inRecipePlannerApi.httpundapp.UseHttpsRedirection(). TLS gehört an den Reverse Proxy, der Container lauscht nur auf HTTP und die App spricht HTTP.Die doppelte
MapToDto-Methode in den beiden Essensplan-Controllern liegt jetzt alsMealPlanMappingExtensionsan einer Stelle.Dtos/SearchDtos.csbleibt vorerst, das hängt an #52.Branch
backend/issue-fixes, Commitsc59a727,026544c,1432e1d,2a1cc95.