Add Prisma 7 flag support
This commit is contained in:
@@ -61,7 +61,7 @@ func (w *Writer) databaseToPrisma(db *models.Database) string {
|
||||
sb.WriteString("\n")
|
||||
|
||||
// Write generator block
|
||||
sb.WriteString(w.generateGenerator())
|
||||
sb.WriteString(w.generateGenerator(db))
|
||||
sb.WriteString("\n")
|
||||
|
||||
// Process all schemas (typically just one in Prisma)
|
||||
@@ -114,13 +114,28 @@ func (w *Writer) generateDatasource(db *models.Database) string {
|
||||
}
|
||||
|
||||
// generateGenerator generates the generator block
|
||||
func (w *Writer) generateGenerator() string {
|
||||
func (w *Writer) generateGenerator(db *models.Database) string {
|
||||
if w.usePrisma7Generator(db) {
|
||||
return `generator client {
|
||||
provider = "prisma-client"
|
||||
output = "./generated"
|
||||
}
|
||||
`
|
||||
}
|
||||
|
||||
return `generator client {
|
||||
provider = "prisma-client-js"
|
||||
}
|
||||
`
|
||||
}
|
||||
|
||||
func (w *Writer) usePrisma7Generator(db *models.Database) bool {
|
||||
if w.options != nil && w.options.Prisma7 {
|
||||
return true
|
||||
}
|
||||
return db != nil && db.SourceFormat == "prisma7"
|
||||
}
|
||||
|
||||
// enumToPrisma converts an Enum to Prisma enum block
|
||||
func (w *Writer) enumToPrisma(enum *models.Enum) string {
|
||||
var sb strings.Builder
|
||||
|
||||
52
pkg/writers/prisma/writer_test.go
Normal file
52
pkg/writers/prisma/writer_test.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package prisma
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.warky.dev/wdevs/relspecgo/pkg/models"
|
||||
"git.warky.dev/wdevs/relspecgo/pkg/writers"
|
||||
)
|
||||
|
||||
func TestGenerateGenerator_DefaultsToPrismaClientJS(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
writer := NewWriter(&writers.WriterOptions{})
|
||||
db := models.InitDatabase("testdb")
|
||||
|
||||
got := writer.generateGenerator(db)
|
||||
if !strings.Contains(got, `provider = "prisma-client-js"`) {
|
||||
t.Fatalf("expected prisma-client-js generator, got:\n%s", got)
|
||||
}
|
||||
if strings.Contains(got, `output = "./generated"`) {
|
||||
t.Fatalf("did not expect prisma7 output path in default generator:\n%s", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGenerateGenerator_Prisma7FlagUsesPrismaClient(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
writer := NewWriter(&writers.WriterOptions{Prisma7: true})
|
||||
db := models.InitDatabase("testdb")
|
||||
|
||||
got := writer.generateGenerator(db)
|
||||
if !strings.Contains(got, `provider = "prisma-client"`) {
|
||||
t.Fatalf("expected prisma-client generator, got:\n%s", got)
|
||||
}
|
||||
if !strings.Contains(got, `output = "./generated"`) {
|
||||
t.Fatalf("expected prisma7 output path, got:\n%s", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGenerateGenerator_Prisma7SourceFormatUsesPrismaClient(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
writer := NewWriter(&writers.WriterOptions{})
|
||||
db := models.InitDatabase("testdb")
|
||||
db.SourceFormat = "prisma7"
|
||||
|
||||
got := writer.generateGenerator(db)
|
||||
if !strings.Contains(got, `provider = "prisma-client"`) {
|
||||
t.Fatalf("expected prisma-client generator from source format, got:\n%s", got)
|
||||
}
|
||||
}
|
||||
@@ -51,6 +51,9 @@ type WriterOptions struct {
|
||||
// "stdlib" — database/sql (sql.NullString, sql.NullInt32, …)
|
||||
NullableTypes string
|
||||
|
||||
// Prisma7 enables Prisma 7-specific output for Prisma writers.
|
||||
Prisma7 bool
|
||||
|
||||
// Additional options can be added here as needed
|
||||
Metadata map[string]interface{}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user