tillbaka till startsidan

65. Ändra lite i schemat bara

Lyssna på Spotify lyssna! Lyssna på iTunes

Vi inleder med både ett nytt och ett gammalt skämt innan vi snackar om verktyget(?) Prisma. Vi pratar om våra erfarenheter av det, hur vi använder det och att sitta på sin kammare och gissa sig till vad en inner left join är. Dessutom en hel del halloweenpumpor, namedroppande av databaser samt ett, något ångestladdat, skrik.

Om du gillar podden blir vi väldigt glada för en liten recension i iTunes eller en prenumeration på Spotify. Följ oss och säg hej på @asdfpodden på Instagram eller Twitter (Anton, Therése) <3

Länkar

Avsnittets skämt:

Why are C++ developers so good at discussions?
They always have such good pointers.
Skrapa här!!
Transkribering
Transkriberingen är gjord av nån "AI-grej". Du kan förbättra den genom att klicka precis här :)
00:00:00
"Varför är C++-utvecklare så bra på diskussioner?"
00:00:06
Jag vet inte.
00:00:08
"De har alltid så bra poäng."
00:00:11
Ja, den var bra tycker jag. Den gillar jag.
00:00:14
Jag tyckte den var lite lång när jag klämde ur den.
00:00:19
Du känner att du tappar Anna på vägen liksom.
00:00:21
Ja.
00:00:23
Man måste artikulera och ha sig.
00:00:26
Jaja, välkomna till ett nytt avsnitt av ASDF.
00:00:32
–Jaha, så varmt välkomna.
00:00:36
–Vi, vad tänkte jag säga, det känns som att jag fortfarande håller på att återhämta mig från Norges, fast på ett positivt sätt.
00:00:45
Alltså att inte att jag är trött, utan jag är trött fysiskt. Det var samma sak.
00:00:51
Jag har fortfarande fått massa energi därifrån och inspiration, men jag är lite trött fysiskt.
00:00:55
- Just det. Du är inte trött, men du är trött. - Exakt, det var det jag skulle säga.
00:01:00
- Jag är mer överkörd av livet tror jag, hösten. - Ja, fy fan, det börjar bli så jävla mörkt nu.
00:01:07
- Ja, och det är också blött och lerigt. Så fan.
00:01:12
Jag har liksom någon helt orimlig rädsla från att halka på löv när jag går runt ute nu.
00:01:18
Alltså jag tänker att varenda löv kommer liksom glida iväg som en jävla isbit under foten på mig.
00:01:23
- Alltså jag har varit så jävla nära på att skrota fullständigt på blöta löv, så jag förstår dig.
00:01:29
- Ja, det är bra. Då är jag inte helt ensam i alla fall.
00:01:31
- Nej, nej. Går så här lite i en backe på bara blöta löv och så min hund som bara drar iväg efter någonting.
00:01:37
Alltså det är... Jag lever ju verkligen på gränsen nu, det känner jag.
00:01:40
Exakt, men det är inte blöta län vi ska prata om. Vi tänkte väl prata om, vad är det för något? Ett verktyg?
00:01:49
Hur man i fysikens värld får fram ett spektrum då använder man sig av en prisma.
00:01:56
Exakt, det var en referens som inte så många tog. Men vi ska prata om något som heter prisma.
00:02:03
som vi skulle säga är ett verktyg. Det är typ ett ORM, som jag inte riktigt kommer ihåg vad det står för just nu.
00:02:09
- Object... - Relational Mapper? Model?
00:02:17
- Model. - Jag måste googla.
00:02:19
- Det här kunde jag... Alltså jag har kollat upp det här så många gånger. Ja, skitsamma.
00:02:23
- Vi har ju... Object Relational Mapping får jag upp som första träff.
00:02:30
Det finns väl något gammalt ormskämt i början av poddens historia tror jag?
00:02:35
- Ja precis, att jag inte kan använda mig av det för jag har ormfobi.
00:02:42
- Exakt. - Det har aldrig varit.
00:02:44
- Det har vi löst nu. - Vilken jävla tight öppning!
00:02:48
- Gud ja. - Alltså det här.
00:02:50
- Nu, nu... - Vänta, låt mig bara säga.
00:02:52
Vet du varför jag inte kan en abstraktion på mina SQL-frågor?
00:02:55
Ormfobi. - Just det, just det.
00:02:57
Där har vi det.
00:02:58
Och vi ska prata om abstraktioner på SQL frågor.
00:03:00
Det var det vi skulle komma till.
00:03:01
Det hade varit perfekt att ha det skämtet nu istället.
00:03:03
Skitsamma.
00:03:04
Nu är vi igång.
00:03:05
Men Prisma i alla fall är ju ett ORM som för typescript och JavaScript.
00:03:13
Och jag har väl använt det ganska länge till lite olika projekt här och där.
00:03:20
Och tycker att det är svinbra.
00:03:22
Du köpte väl också Indepore nu när du började bygga din nya Remix-app?
00:03:28
Jajamän.
00:03:29
Och vi har väl testat lite olika.
00:03:31
Har du kört något annat ORM innan?
00:03:35
Nej, absolut inte på SQL-databaser.
00:03:42
Jag tror att jag var inne någonsin i Mongoose.
00:03:45
Ja, precis. För det är väl också lite liknande för Mongo, även om det inte är en relationsdatabas på samma sätt.
00:03:51
Ja, men sen är det ju, alltså Mongo i sig är ju rätt snällt så det är inte alltid man behöver ett ORM kanske.
00:03:59
Det är bara att slänga in saker och plocka ut igen.
00:04:03
Ja typ, jag tror väl det är det din nuvarande kollega, min gamla kollega, alltid säger.
00:04:08
Ja men, du måste ju gilla Prisma. Du körde ju Mongo Aggregation Pipelines, det är ju typ samma sak.
00:04:13
Ja, exakt.
00:04:15
Prisma är ett TypeScript-ORM, eller det är byggt på TypeScript.
00:04:21
Och för mig, jag vet inte, man kan ju använda det utan TypeScript.
00:04:26
Du kan ju köra ditt javaska projekt, men jag vet inte riktigt om jag ser...
00:04:29
Där tror inte jag att det är en stor anytan.
00:04:31
Men jag vet inte riktigt vilken ände vi ska börja i.
00:04:35
Men så här då.
00:04:37
Det Prisma gör till att börja med är att de har en del som kallas för deras schema.
00:04:43
Och det är typ där du specificerar hur din databas ska se ut.
00:04:46
Så att du skriver en modellobjekt och så kan man döpa den till någonting som blir namnet på tavellen.
00:04:54
Och sen kan du stoppa in där vilka kolumner eller fält du vill ha på den modellen.
00:04:59
Lite likt tanken bakom typ ett ERD-diagram.
00:05:05
Entity Relationship Diagram.
00:05:07
Man kan ju generera upp ett sånt baserat på den här schemat till exempel.
00:05:11
Nu är jag långt tillbaka i universitetet och har helt en port human.
00:05:16
Hur det funkar. Men, Julian, måste man ut och vifta lite grann?
00:05:20
– Ja, pass på alla de här grejerna. – Perfekt.
00:05:25
Då kan jag stå oemotsagd och tro att jag har rätt i alla fall.
00:05:30
Så man spelsar det här schemat. Och då spelsar man liksom så här.
00:05:34
gå mot en Postgres-databas till exempel, eller en SQLite-databas.
00:05:40
Och sen bygger man upp sitt schema och relationerna mellan.
00:05:46
Jag kör EBS Code och har deras extension och då får man väldigt mycket gratis.
00:05:50
Så skapar man upp en relation och då stoppar den in massa så här
00:05:53
"Det är den här som vi vill ha som primary key, den här som vi vill ha som foreign key"
00:05:57
"Hur ska relationen se ut?" och allting sånt.
00:05:59
Jag gissar bara att du köper samma också.
00:06:01
Ja, jag kan inte påminna mig om att jag har lagt till ett extension, men det antar jag att jag har.
00:06:06
Jag får också väldigt mycket hjälp.
00:06:08
Ja, precis. Man får också syntax-highlightning och grejer från extensionet tror jag.
00:06:12
Det kan ju också sägas att du behöver inte använda en relationsdatabas.
00:06:15
Du kan ju fortfarande använda en dokumentdatabas om du vill det.
00:06:18
Det kan man, absolut. Så den stödjer Mongo också, så vitt jag vet.
00:06:23
Och kanske, jag vet inte, dokumentdb kanske också, om jag inte minns fel.
00:06:26
Ja, det kan vara DynamoDB också.
00:06:28
Ja, så kan det säkert vara.
00:06:30
Men i alla fall, man spesar det här schemat, och det är egentligen det schemat som allting utgår ifrån.
00:06:34
Så att när man sen ska göra operationer mot sin databas så finns det två saker man gör egentligen.
00:06:44
Det ena är att man har ett CLI där du säger typ så här "ja men jag vill skjuta in de här uppdateringarna i databasen som jag har hört"
00:06:52
i schemat. Då kan man antingen bara uppdatera databasen så att den matchar schemat
00:06:57
eller så kan man generera en migrering.
00:06:59
Och med migrering, om man inte har stött på det tidigare, så är det en SQL-fil som kör SQL-queries för att
00:07:07
databasen ska matcha ditt schema egentligen.
00:07:09
Och det är ganska likt till exempel Entity Framework som finns till .NET.
00:07:12
Där kör man också migreringar, så man genererar upp och sen sköter den matchningen mellan databasen och
00:07:19
de här migreringsfilerna.
00:07:21
Fly away är också ganska vanligt.
00:07:25
Just det.
00:07:27
Och sen den andra biten är att du har en klient, och då är det en TypeScript-klient.
00:07:34
Och det som jag tycker, det är här min stora kärlek till Prisma kommer ifrån egentligen,
00:07:38
för att det här Prisma-skinen för mig är att den här klienten, den genereras upp med typer baserat på ditt schema.
00:07:47
Så du får alla typer som matchar ditt databasschema.
00:07:52
Out of the box, så fort du har spesat den här schemafilen.
00:07:55
Och även då klienten, när du gör anropande, du skriver till exempel en update, då får du det typ att allt matchar.
00:08:05
Och det är där jag känner att Prisma verkligen skiner för mig.
00:08:09
att man slipper sitta med det här att, just det, hur såg databasen ut nu när jag ska skriva den här manuella SQL-queryn och se hur det såg ut.
00:08:17
Vad hette det här fältet eller vad hette den här kolumnen och så vidare och så vidare.
00:08:22
Ja, det är lite kul det där, för jag har ju försökt hålla mig ganska långt borta från databaser och grejer.
00:08:27
Jag är fortfarande arg på vissa saker, men någonting jag absolut inte har behövt oroa mig över så är det ju typerna.
00:08:33
Ja.
00:08:34
Så ja, det får jag nog bara hålla med och vara lyckligt ovetandes om hur illa det kan gå. Eller, jag är inte lyckligt ovetandes, jag vet också.
00:08:45
Men det är nog inte ens någonting jag har registrerat.
00:08:49
Nej, men exakt. För jag har ju ändå sålt in det här på det nuvarande projektet jag sitter på också. Så vi har börjat köra Prisma där.
00:08:56
Jag jobbar ju med lite folk som är SQL-frälsta, alltså de gillar ju verkligen SQL.
00:09:02
Och tycker att man tappar kontrollen över databasen och sånt där.
00:09:05
Men även de har blivit lite konverterade när de väl har märkt det här man får runt omkring.
00:09:09
De kanske inte bryr sig så mycket om hur man ställer frågorna eller så där.
00:09:13
Men just att du får en autocomplete, out of the box, du får alla typescript-typer och allting sånt.
00:09:18
Har gjort att de också "ah, det är ju ganska trevligt".
00:09:20
- Ja, det är stort! - Ja, det är stort.
00:09:24
Det är också lite så här att vi också märkte nu, för nu har vi byggt en ny feature som har varit väldigt databastung i det här att vi inte riktigt visste hur modellen skulle se ut när vi började bygga den.
00:09:36
Vi har varit tvungna att göra väldigt många ändringar på databasschemarna.
00:09:40
Det har också varit väldigt smidigt, för det är så snabbt att ändra i Prisma.
00:09:46
Man ändrar bara schematfilen och så kör man några CLI-kommandos och så helt plötsligt har du genererat upp en ny databas med det nya schemat.
00:09:53
Och även sidat data kan ju Prisma hjälpa till med.
00:09:56
Jag tycker att det har hjälpt extremt mycket just under den tiden.
00:10:01
Vi kanske tjänar mindre på det så småningom när vi inte gör lika mycket databasändringar.
00:10:05
Men vi har sparat så sjukt mycket tid ur mitt perspektiv på att vi har den här autogenererade typningen och allting sånt.
00:10:12
Men då är det väl att man inte behöver bry sig om datan som finns nu.
00:10:18
Alltså för att jag lever ju så här, nu har jag en psyko-lite-databas för tillfället då.
00:10:24
Det är så här, "Delete data-file", "Push up en ny".
00:10:28
Alltså det är hela mitt utvecklingsflöde.
00:10:31
Det är så här, ändra lite schemat, "Deleta databasen", "Push up en ny", "Sida in data".
00:10:37
Ja, verkligen. Och så fredagslunchen som jag pratade om förra avsnittet, den byggde jag också så att jag bara tog bort. Jag kör också SQLite där och den tog vi bort för databasfilen hela tiden.
00:10:50
Och sen tycker jag att det funkar väldigt bra med migrations också.
00:10:54
Vi har ju ändå Prisma i produktion hos mitt riktiga projekt som inte är ett tidigare projekt.
00:11:02
Och där kör vi migreringar och det funkar också väldigt smidigt.
00:11:08
Det är väl ibland när vi har gjort någonting och bara "ah just det, nu behöver vi röja data till den här tabellen"
00:11:14
och då får man göra lite manuellt arbete.
00:11:16
Men det hade ju varit samma sak om man skulle göra ändringen utanför Prisma.
00:11:20
Jo, men alltså vet jag ju så här, det enda jag ibland känner är
00:11:25
hur många migreringsfilar det är för många migreringsfilar.
00:11:29
När tar det slut?
00:11:31
Alltså det känns ju inte som att det borde finnas någon gräns.
00:11:33
Jag har liksom inte sprungit på att jag har hört något om att
00:11:36
du kan hundra migreringar, då är det slut.
00:11:39
Det beror bara på hur länge man har arbetat och hur atomiska förändringar man gör.
00:11:45
Jag vet, men jag tycker att det känns som ett jävla waste om du har suttit där skitlänge och sen ska du ha en miljard migreringsbilar som ska tuggas igenom varje gång man ska skicka ut något nytt.
00:11:57
Ja, men den är ju smart nog i alla fall att bara köra de migreringar som inte har gjorts.
00:12:02
Den är det?
00:12:04
Jag tror kanske Entity Framework funkar på samma sätt, men den skapar upp en liten tabell i databasen som heter Prisma Migrations, om jag inte minns fel.
00:12:15
Den håller koll på vilka migreringar som har körts och vilken timestamp det var på.
00:12:21
Då vet den när den applicerar dina migrations vilka som har körts tidigare.
00:12:27
Jag har så många problem med allting. Jag vet inte vad jag håller på med. Jag har någon tanke om att ingenting är produktionssätt.
00:12:43
Så innan man ska gå live så tänker jag att jag bara droppar databasen i produktion och sen dödar alla migreringsfiler och skapar upp en enda ny migreringsfil.
00:12:52
Så det börjar se fräscht.
00:12:54
Absolut, det kan du göra.
00:12:56
Jag tror kanske att, vi jobbar ju väldigt mycket, för i Prisma finns ju ett command som heter Prisma db push, alltså deras CLI.
00:13:03
Och den pushar ju liksom då dina schemaändringar till databasen, utan att göra en migrering.
00:13:08
Så att när vi kör lokalt så kör vi bara den, och så skapar vi liksom inte en migrering direkt.
00:13:13
Utan vi skapar en migrering när vi känner att nu är vi klara med den här featuren, och så skapar vi en migrering då liksom.
00:13:17
Och det fungerar ändå väldigt bra.
00:13:19
Men så gör jag ju också, hela tiden.
00:13:21
Men sen är det något så här att, "Ja men du får gärna skicka ut det senaste du har."
00:13:25
Ja men det är typ halvklart och jag kommer ändra massa i de här schemarna.
00:13:28
Men okej, okej, okej.
00:13:30
Jag vet inte. Jag hade någon grej nu där jag satt och bara så här,
00:13:34
"Men varför har jag en egen tabell för lösenord? Varför ligger inte lösenordet bara på användaren?"
00:13:38
Och så gjorde jag om. För det var nödvändigt.
00:13:40
Men nu, alltså sånt håller jag på med.
00:13:43
Det är jätteonödigt.
00:13:45
Jag tycker det är svårt, jag är ju verkligen inte någon expert på databasmodellering.
00:13:52
Kanske också därför jag känner att det är skönt att man kan göra många ändringar på ett lätt sätt.
00:13:58
Och att jag slipper sitta och titta i en databas för att fatta hur schemat ser ut.
00:14:02
Utan bara kan titta i den här Prisma-schema-filen.
00:14:06
Ja, alltså samma. Och sen är det någonting som är så otroligt skönt med att de har ju det här Prisma Studio.
00:14:12
Och så startar man upp den, och så får man upp det lokalt, och då får man i browsern på "localhost"
00:14:21
så får man ett gränssnitt över hela ens databas.
00:14:26
Typ Excel, liksom.
00:14:28
Ja, och relationerna. Den stoppar även in relationerna i den.
00:14:32
Så att du liksom får en översikt. Alltså du kan klicka dig runt och kolla på det.
00:14:37
Och det är så jäkla nice!
00:14:39
Ja, jag tycker den är väldigt trevlig också. Jag glömmer ofta bort den.
00:14:42
Och kör liksom något verktyg utanför. Jag kör Beekeeper nu, det är min senaste, som är en SQL editor.
00:14:49
Där man kan ansluta sig till databasen och köra lite queries och sånt.
00:14:51
Men Prisma Studio är så smidig, för man kör Prisma Studio i CLI och så är man ansluten redan. Och så är det klart.
00:14:57
Och jag håller med, det är väldigt trevligt. Och att du faktiskt kan göra ändringar i den är ju väldigt nice.
00:15:03
Så om man bara vill ändra på den här lilla grejen, du behöver inte skriva någon SQL query, du kan bara gå in och klicka runt där och så är det klart.
00:15:08
Ja, jag skulle behöva dig i produktion också. Det vore toppen om vi kunde gå in och trampa omkring ett gränssnitt i produktionstatabas.
00:15:16
Nej, men jag har ju så himla mycket problem. Jag har inte hållit på med så mycket SQL överhuvudtaget.
00:15:26
Jag har alltid, tanken har väl varit att jag ska lära mig saker men så har det aldrig blivit det.
00:15:33
Jag har kämpat såhär, när jag SSOade in på databasen i produktion och jag bara
00:15:39
"Hur tar jag bort den rad?" och så börjar jag googla över något såhär,
00:15:42
för det är ju något databas-CLI, jag bara "Jag fattar inte, jag fattar inte"
00:15:45
"Ja, man ska göra en SQL query"
00:15:47
"Okej, ja det är rimligt, hur fan gör man det då?"
00:15:50
"Delete row where"
00:15:53
Alltså, det tar så lång tid för mig.
00:15:57
Det är sjukt.
00:15:58
Så ibland känner jag väl lite att med Prisma så kommer jag ännu längre bort.
00:16:03
Och jag vet inte om det är ett problem.
00:16:05
Men jag skulle ju inte kunna göra en join för att rädda mitt liv.
00:16:12
Nej.
00:16:13
Och jag förstår, union och vändiagram, och det finns någon grund där.
00:16:19
Men jag menar de här jävla outer, inner, left joints.
00:16:23
Vad fan? Nej!
00:16:24
Har du sett den här bilden på pumporna och SQL joints?
00:16:32
Ja, kanske.
00:16:34
Jag kan ta fram den här så lägger vi den i kommentaren också.
00:16:39
Men här skickar jag den till dig nu.
00:16:44
Jag tycker det är en superbra exempel på hur det funkar.
00:16:48
Det är liksom ett vändiagram över, fast det är en Halloween-pumpa som försöker förklara hur alla de här jointsen fungerar.
00:16:59
Vi lägger en länk till den i beskrivningen så kan folk gå in och kolla.
00:17:01
Men jag fattar inte heller det. Och då har jag ändå skrivit ganska mycket SQL i mina dagar, även om det var ett tag sedan nu.
00:17:08
Jag har läst någon typ av logikmatte som är grunden och det är samlingstabeller och det är unions och allt sånt men det är ändå såhär.
00:17:18
Det är fan inte alltid lätt, men då måste ju du uppskatta prisma-querysen av extremt mycket istället.
00:17:28
Ja, men jag hade problem där med. Jag bara, vadå en relation? Är det här en riktig relation?
00:17:32
Alltså, ja, jag har suttit i mitt egna huvud så jävla mycket och det är en skrämmande plats att vara på.
00:17:40
Sen har jag också fastnat jättemycket på, jag bara, men alltså det är ju SKL.
00:17:44
Ska det inte vara Snake Case?
00:17:46
För nu är alla mina modeller som är motsvarande Tables, de är ju Pascal Case.
00:17:51
Och sen kör jag Camel Case för allting i tabellen.
00:17:56
Och då fastnade jag bara på att säga, men nu brukar jag ha Snake Case.
00:18:00
Det här funkar inte.
00:18:02
Ja, det där är lite intressant. För det går ju att styra på jobbet så var det väldigt för så här,
00:18:11
i påskrest då måste man ha Snake Case, med Anders Gård.
00:18:16
Då måste man ha Snake Case som tavellerna.
00:18:20
Och så visar jag priset på dem, hur sätter man Snake Case?
00:18:24
Vi kan lösa det. Du kan ju ställa in i ditt schema så att du får olika i klienten och i databasen.
00:18:32
Du skriver på en kolumn "@map" och sen skickar du in en sträng och då blir det namnet i databasen.
00:18:40
Medan namnet du sätter på själva raden i Prisma-schemat blir namnet i klienten.
00:18:46
Och sen kan man sätta "@@map" på hela modellen och då blir det namnet på tabellen i databasen.
00:18:51
Så att vi har liksom, jag tycker att det är lite onödigt för att vem fan bryr sig om det är Snake Case i datavasen
00:18:57
Men jag kände också att när jag skulle sälja in Prisma så då är det mitt minsta problem att övertyga dem om att det ska vara rätt i datavasen
00:19:08
Så att det går, jag har inte sprungit in i något fall när jag känner att nu måste jag nog sträcka mig efter SQL
00:19:18
Inte hittills i alla fall.
00:19:20
- Herregud, kan det komma? Jag är inte beredd i livet att få hand om en sån situation.
00:19:28
- Jag har inte gjort det än i alla fall, så jag vet inte riktigt när det skulle kunna dyka upp.
00:19:32
- Jag blev bara så avsjuk när jag hörde att det var andra människor att diskutera med.
00:19:40
Jag saknade så himla mycket.
00:19:44
Jag håller på att driva mig själv till vansinne.
00:19:49
Du sitter på din kammare och undviker att skriva SQL.
00:19:52
Ja, och jag bara "Hur ska det vara så här idag?"
00:19:56
"Ska jag ha en tabell för det här?" "Hur jojnar jag ihop dem?"
00:19:58
"Får man göra så här?"
00:20:00
Alltså det är...
00:20:02
Ja, det kan jag förstå.
00:20:05
Du får väl gå med i något Discord-community och hitta din gemenskap.
00:20:12
Specifikt för folk som ensamt bygger produkter när de databasmodellerar massa utan att veta hur man databasmodellerar.
00:20:23
Exakt, exakt. Det finns ju en app som jag tycker är ganska trevlig som heter, heter den Centered kanske?
00:20:30
Ja det heter den. Som är liksom en produktivitetsapp. Det är väl en liten glorifierad pomodoro timer om du vet vad det är?
00:20:37
Åh nej.
00:20:39
Att man jobbar 25 minuter, pausar 5 minuter, jobbar 25 minuter, pausar 5 minuter och så vidare.
00:20:44
Men det den gör är också att den lägger till en massa community-grejer och att man kan ha sin to-do-lista i den.
00:20:53
Och då kan man sätta sig i rum med folk och ha sin kamera på.
00:20:57
Och så kan man sitta där och jobba tillsammans.
00:20:59
Så att det känns som att man sitter tillsammans och jobbar, fast man inte gör det.
00:21:03
Så att det kanske också är något för dig.
00:21:05
Fast jag känner ju också att du skulle tycka att det var ännu värre.
00:21:09
- Ja, mardröm. Alltså fy fan.
00:21:12
Alltså för att jag också är...
00:21:15
Vi ska tillbaka till prisma strax, men för att jag också inte...
00:21:19
Det går inte att jobba med mig i närheten.
00:21:21
För att jag satt i liksom en timme idag och fick inte ordning på min jävla...
00:21:26
Jag skulle hascha någonting och satt och liksom...
00:21:29
Jaha, det funkar inte. Så fick jag bara så här...
00:21:33
Och sen till slut inser jag att jag har skrivit "tja265" istället för "tja256".
00:21:39
Och då är det så här...
00:21:41
Och så sitter jag där och sen är jag plötsligt...
00:21:43
AAAAAAAAHHHHH!
00:21:46
Ut i världen.
00:21:48
Och jag tänker att det inte är ett Coworking Space-beteende.
00:21:54
Ja, fast jag tänker att det kanske är det som är Coworking Space-beteende.
00:21:58
[Skratt]
00:22:01
Jag tror det var någon gammal kollega till mig som sa under någon sån här feedback-session, han bara "Det är så kul, du sitter där borta i ditt hörn och typ pustar och stonkar och ojar massa vid Java, det är jätteutdralande".
00:22:10
Jag bara "Ja, vad bra".
00:22:12
Toppen.
00:22:14
Ja, det är ändå perfekt.
00:22:16
Jag förstår dig, absolut.
00:22:18
Men, jag vet inte, vi får hitta någon den gillande mellanvägen så att säga.
00:22:23
Kollegor kanske?
00:22:25
Ja, exakt. Det är ett absolut bra intervju.
00:22:28
Jag skulle vilja säga något om Prisma där som jag totalt glömde bort.
00:22:36
Har du kollat på de SQL-queries som Prisma genererar? Jag gissar på nej.
00:22:44
Det har vi tänkt att vi ska göra litegrann i mitt team för att vi är lite nyfikna mest.
00:22:50
Men det är också ganska kul att veta att Prisma ändå spottar ut sig i SQL-queries.
00:22:55
Men det skulle vara intressant att se hur de ser ut.
00:22:57
Det ska finnas att man sätter en debug-flagga i klienten.
00:23:00
Och då kommer den bara konsollogga SQL-queries när den kör.
00:23:05
Men som jag har förstått det, utan att ha så mycket belägg för det, så ska de vara väldigt optimerade.
00:23:11
Så att det ska vara att man undviker att den gör 15 queries istället för en som den kunde ha gjort med Join.
00:23:17
Så jag har högt förtroende.
00:23:21
När du säger klienten, vad menar du ens då?
00:23:25
Alltså när du kör new Prisma eller vad fan det är.
00:23:27
Alltså den du kör prisma.databasnamn eller tabellnamn.find eller vad fan det är.
00:23:33
Ah, okej.
00:23:35
Det är Prisma Client.
00:23:38
Det som jag känner är lite svårt med Prisma, det är att jag inser ibland att jag vill göra saker.
00:23:45
Men jag förstår ju absolut inte hur jag ens gör dem i SQL.
00:23:48
Alltså jag vet inte vad som går att göra i SQL och vad som inte går att göra i SQL.
00:23:52
Så det gör det ganska svårt för mig också att hitta vad i Prisma det är jag vill göra.
00:23:56
Och det är ju snarare en bristande kunskap för mig.
00:23:59
Men det har inte varit så jäkla lätt att bara hoppa in i Prisma.
00:24:05
Alltså det känns som att jag ändå behöver ha lite grundläggande basic-kunskaper.
00:24:10
Alltså typ som vi pratade här innan.
00:24:12
att jag pratade om hur man gör när man vill kunna låsa databasen för att kunna göra transaktions och sen "committa".
00:24:19
Just det.
00:24:20
Ja, och då sa du att det finns dollartecken transactions och så.
00:24:23
Det hade ju antagligen tagit mig ganska lång tid att ens hitta fram till vad det är jag försöker göra.
00:24:30
Ja, men exakt.
00:24:31
Nej, för det är ju verkligen så att mappningen mellan Prisma och SQL är ändå ganska ett till ett.
00:24:37
Du skriver fortfarande "where" och du skriver "update" och du skriver vad det nu kan vara.
00:24:43
Men det blir ju svårare att skriva prisma grejer om man inte kan SQL, så är det ju absolut.
00:24:50
Sen kollade jag bort mig massa på det här med "relation one to one, one to many, many to many".
00:24:57
-Just det. -Oh my god.
00:25:00
Sen försökte jag tydligen göra en sån här relation där jag får två olika idén.
00:25:04
Försökte relatera till den andra av samma typ två gånger.
00:25:08
Och då hade jag center hela tiden.
00:25:13
Men det kan hända. Det händer det bästa.
00:25:17
Men sen finns det ju också...
00:25:19
Jag tycker ändå att det är skönt att man inte blir totalt invagad i trea.
00:25:22
Jag har hittat en del saker som att den här typen finns inte i en SQLite.
00:25:27
Så den kan du inte lägga in i med att du kör en SQLite.
00:25:30
Det är ju bra så att man inte tror att det sker.
00:25:35
Man har någon falsk trygghet.
00:25:37
Ja, exakt. Och du är också väldigt duktig på att när man genererar upp de här migreringsfilerna
00:25:41
så är du väldigt duktig på att varna i dem om man gör någonting som kan leda till dataförlust.
00:25:45
Eller saker som man inte kan göra. Om du försöker byta namn på den här tabellen.
00:25:50
Eller du försöker lägga till någonting som är "required" fast du kanske har rader i tabellen.
00:25:56
Och då kommer det inte att gå.
00:25:57
Och det är den också väldigt duktig på att varna för.
00:25:59
- Ja, vad händer om man ändå bara kör på och sen pushar till produktion?
00:26:04
För jag har ju bara hållit på så här i lokalt.
00:26:08
- Ja, din migrering lär väl "faila" tror jag.
00:26:11
Om det är så.
00:26:12
Alltså själva migreringen kör ju fortfarande bara SQL rakt upp och ner.
00:26:17
Och då kommer ju den SQL-queryn man skriver faila.
00:26:21
-Vad fan gör man då då? -Oftast får man göra någon egen.
00:26:25
Du kan ju redigera migreringsfilerna efter att du har skapat dem.
00:26:29
Och då får man skriva SQL-manuellt istället.
00:26:33
-Det här pratade vi lite om i min ångest-session där.
00:26:39
Det är väl att jag ska behöva göra en migrering som jag inte kan göra i livet.
00:26:43
Jag är så rädd för att migrera data. Det är skrämmande.
00:26:48
Du kan bara säga till mig så tar vi dig live i podden.
00:26:52
Ja, det får vi göra. Det kommer den dagen jag känner mig någorlunda så här, okej nu ska vi få ut här någonting.
00:26:58
Då kommer jag behöva gå in i produktion, googla i fem timmar om hur jag droppar min db.
00:27:04
Och sen droppar den och så kör vi allt från början.
00:27:07
Ja, jag med.
00:27:08
Herregud.
00:27:10
Ja, det blir spännande. Det blir ju en anledning till att återkommas helt enkelt.
00:27:14
[Skratt]
00:27:17
Det är liksom att alla alltid måste följa med på min ångestresa.
00:27:22
Perfekt. Det är det bästa innehållet i podden tycker jag.
00:27:25
Vad vi än pratar om så handlar det alltid om min ångest.
00:27:29
Det är bara lite, vi går på lite sidospår, men det är den röda tråden.
00:27:33
[Skratt]
00:27:35
Nej, nu ska vi inte tänka för mycket på ångest tycker jag. Jag tycker att det var ett roligt avsnitt. Kul att prata lite Prisma.
00:27:45
Ja, men jag måste säga att jag tycker att det har varit väldigt trevligt att jobba med. Jag känner mig väldigt hemma. Nu sitter jag i Remixnode Prisma och det är väldigt seamless.
00:27:56
Det är ju så att jag är lite rädd för att jag inte ska hålla koll på att saker inte körs i klienten. Det känns för lätt att det bara är där och lirar.
00:28:04
Jo, och just sista poängen där kanske är att du kan använda de Prisma-genererade typerna i klientkoden till exempel.
00:28:14
Det gör jag typ hela tiden. Alltså som du spesar att den här ska vara den här proppen.
00:28:18
Den ska vara den här typen. Och då kommer den från Prisma. Och så kan man bara skicka in den från sitt databasanrop genom någon loader eller någon get-server-side-prop.
00:28:26
Och så är det typat från databasen till servern till klienten. Och det är ju extremt trevligt.
00:28:34
Ja, jag kör ju sådana svinmånga "awaited return type" typ av funktionen som jag kallar det.
00:28:42
Ditt databasanrop.
00:28:44
Liksom rätt djurvärde.
00:28:46
Precis.
00:28:48
Och så blev jag så skrajd för det var någon som sa
00:28:50
"Man borde verkligen inte göra databasanrop från klienten. Det är inte bra."
00:28:54
Jag bara "Nej, men det är ju en serverkod eller har jag fuckat upp allt? Jag vet inte."
00:28:59
Med tanke på att Prisma inte kör i browsern så är det ganska lugnt.
00:29:04
Jag vet, men jag mår ändå piss för jag har som sagt bara mig själv att diskutera med sen.
00:29:10
Toppen! Kul att ni lyssnade hörni. Vi är väl tillbaka igen om två veckor. Så hörs vi då.
00:29:17
Det gör vi. Ha det gött så länge. Vi ses då. Bye bye.
00:29:21
Hej då.
00:29:22
[Outromusik]
00:29:30
Hej då!
Tillbaka upp