Reputation: 799
I'm planning to have an application that will be having a Golang
API Back-End with Angular
Front-End and PostgreSQL
Database. Few days ago I discovered Prisma
and it rang a bell for me; if I create the DB schema first with Prisma-Go-Client
then I'd be able to write Front-End and Back-End without creating any beans/models for DB manually and especially for the Front-End I'd directly start coding without any Database connection and API just using prisma generated imports that are Typescript
models. So basically I could mock some temporary data with imported models and when Back-End would be ready consistent data types would flow and all I have to do it switch from mock data to bind it to the API request of the required data.
Now the question is; for Golang
Back-End side its fine, I'll import prisma-go-client
and generate the models and use them for any schema change and CRUD
then return that data as a result etc. but what about Front-End? Should I create prisma TS client into existing Angular
Front-End and generate models or this will result of a database reveal after the build of the code into the dist
? Or if I create another project only for this purpose that will create TS
prisma models and only get and import that models into the existing angular project will that work or will it still contain DB reveal?
Lastly, if prima-go-client
creates models for GoLang
and I parse the DB result into that model and return it as JSON to the Front-End, will TS
generated prisma models be able to parse that response? or they will not be consistent since they are generated between two different languages and they will have difference (which I expect them to be same)?
Upvotes: 1
Views: 446
Reputation: 22921
This wouldn't work because the Prisma TS Client is not meant to be used on the frontend. It's a backend library, just like the Prisma Go Client.
You could use the Go Client within a type-safe GraphQL server like https://github.com/99designs/gqlgen and then use a type-safe GraphQL client on the frontend.
Just a note that the Go Client is no longer officially maintained: https://github.com/prisma/prisma-client-go/issues/707. We'd recommend you use the TS client, if possible.
Upvotes: 4