From e97ad542a6d52fe836a88921d804c11e83c15e41 Mon Sep 17 00:00:00 2001 From: Luca Steeb Date: Fri, 22 Dec 2023 01:04:08 +0700 Subject: [PATCH] fix(generator): adapt unique field casing (#1135) --- generator/ast/transform/index.go | 6 +++++- generator/ast/transform/models.go | 2 +- generator/templates/query.gotpl | 2 +- test/features/composite/default_test.go | 7 +++++++ test/features/composite/schema.prisma | 4 ++++ 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/generator/ast/transform/index.go b/generator/ast/transform/index.go index e035bb93..f0ba4b86 100644 --- a/generator/ast/transform/index.go +++ b/generator/ast/transform/index.go @@ -27,7 +27,7 @@ func indexes(m dmmf.Model) []Index { if len(m.PrimaryKey.Fields) > 0 { idx = append(idx, Index{ - Name: getName(concatFieldsToName(m.PrimaryKey.Fields), m.PrimaryKey.Fields), + Name: convert(m.PrimaryKey.Fields), InternalName: concatFieldsToName(m.PrimaryKey.Fields), Fields: m.PrimaryKey.Fields, }) @@ -51,6 +51,10 @@ func getName(field string, fields []types.String) types.String { if field != "" { return types.String(field) } + return convert(fields) +} + +func convert(fields []types.String) types.String { var name string for _, f := range fields { name += f.GoCase() diff --git a/generator/ast/transform/models.go b/generator/ast/transform/models.go index 010a4b75..5edefc56 100644 --- a/generator/ast/transform/models.go +++ b/generator/ast/transform/models.go @@ -20,7 +20,7 @@ func (m Model) CompoundKeys() []Index { if m.OldModel.PrimaryKey.Name != "" { items = append(items, Index{ - Name: m.OldModel.PrimaryKey.Name, + Name: types.String(m.OldModel.PrimaryKey.Name.GoCase()), InternalName: m.OldModel.PrimaryKey.Name.String(), Fields: m.OldModel.PrimaryKey.Fields, }) diff --git a/generator/templates/query.gotpl b/generator/templates/query.gotpl index 0ad1e5bb..66b16680 100644 --- a/generator/templates/query.gotpl +++ b/generator/templates/query.gotpl @@ -54,7 +54,7 @@ {{/* composite keys for FindUnique */}} {{ range $unique := $model.CompoundKeys }} - func ({{ $nsQuery }}) {{ $unique.Name.GoCase }}( + func ({{ $nsQuery }}) {{ $unique.Name }}( {{- range $f := $unique.Fields }} _{{- $f.GoLowerCase }} {{ $model.Name.GoCase }}WithPrisma{{ $f.GoCase }}WhereParam, {{ end -}} diff --git a/test/features/composite/default_test.go b/test/features/composite/default_test.go index ace9f9b3..acf4b2eb 100644 --- a/test/features/composite/default_test.go +++ b/test/features/composite/default_test.go @@ -12,6 +12,13 @@ type cx = context.Context type Func func(t *testing.T, client *PrismaClient, ctx cx) func TestComposite(t *testing.T) { + // no-op compile time test + + User.SomethingIDAnotherIDStuff( + User.SomethingID.Equals(""), + User.AnotherIDStuff.Equals(""), + ) + tests := []struct { name string before []string diff --git a/test/features/composite/schema.prisma b/test/features/composite/schema.prisma index a5348533..221cc543 100644 --- a/test/features/composite/schema.prisma +++ b/test/features/composite/schema.prisma @@ -15,6 +15,10 @@ model User { middleName String lastName String + somethingId String? + anotherIdStuff String? + @@id([firstName, lastName]) @@unique([firstName, middleName, lastName]) + @@unique([somethingId, anotherIdStuff]) }