Utformade en arkitektur för direkt vidarebefordran av JSON, där PostgreSQL‑funktioner returnerar komplett JSON som Go‑API:t skickar vidare ordagrant, vilket tog bort mellanliggande deserialisering och frikopplade frontenden från schemaändringar.
Arbetet utfört: 2025
JSON direkt från databasen till webbläsaren
Situation. Vanligtvis tar sig data från en databas till en webbläsare genom en stafett av transformationer. Databasen lämnar rader till API:et, API:et deserialiserar dem till structar, formar om dem, serialiserar dem tillbaka till JSON, och först därefter skickas de ut. Varje sådant steg är kod man skriver, kod man testar och ytterligare ett ställe där API:ets bild av datan och databasens bild av den kan glida isär.
Uppgift. Idén var att hoppa över stafetten. Om databasen kunde returnera det färdiga svaret kunde API:et bara skicka det vidare, och frontenden kunde vara beroende av databasens form direkt i stället för av en handunderhållen kopia av den som låg i Go‑koden.
Handling. Så det byggdes för att skicka svaret rakt igenom. PostgreSQL‑funktionerna sätter ihop hela svaret som JSON — formningen hör hemma i SQL och görs där datan redan finns. Go‑handlern tar emot det som json.RawMessage och vidarebefordrar det orört; den bryter aldrig ned det och kodar aldrig om det. En liten QueryJSON‑hjälpfunktion gjorde det mönstret till minsta motståndets väg i stället för något man behövde komma ihåg att göra. Det som föll bort var allt det mellanliggande maskineri som ett konventionellt lagerindelat API samlar på sig — DTO:erna, mappningsfunktionerna, svars‑structarna.
Resultat. Handlerkoden blev dramatiskt kortare, och framför allt slutade frontenden vara kopplad till Go. Ändrar man vad en funktion returnerar flödar den nya formen rakt igenom till klienten, utan att någon ändrar en enda rad handlerkod. Färre rörliga delar, och en hel kategori av glidning mellan lagren existerar helt enkelt inte här.
Se tillbaka på Utformade arkitekturen för en skiktad sjöfartsplattform som håller isär en PWA‑frontend i Next.js, ett API i Go (Huma/Fiber) och ett funktionsskikt i PostgreSQL, med all affärslogik i databasen. Läs vidare: Utformade ett system för att växla organisationskontext med localStorage hos klienten och en speglad cookie på serversidan, så att användare kan agera som de organisationer de förvaltar medan auktorisering enligt minsta behörighet upprätthålls. Eller ta en titt på hela portföljen.
En del av en längre historik — och den finns i sin helhet här.
Varje post är skriven på samma sätt: situationen, uppgiften, vad vi gjorde och vad som förändrades.