Skip to content
This repository was archived by the owner on Sep 2, 2022. It is now read-only.

Commit ff91f1c

Browse files
authored
Merge pull request #4747 from prisma/CustomIdsWithRelationsOnPostgresAndMySql
Fix Relationtable bug in Postgres and SQLite
2 parents 39727ee + 40112cf commit ff91f1c

File tree

3 files changed

+69
-4
lines changed

3 files changed

+69
-4
lines changed

server/connectors/deploy-connector-postgres/src/main/scala/com/prisma/deploy/connector/postgres/database/PostgresJdbcDeployDatabaseMutationBuilder.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,15 +109,15 @@ case class PostgresJdbcDeployDatabaseMutationBuilder(
109109
#$aColSql,
110110
#$bColSql,
111111
FOREIGN KEY ("#$modelAColumn") REFERENCES #${qualify(project.dbName, modelA.dbName)} (#${qualify(modelA.dbNameOfIdField_!)}) ON DELETE CASCADE,
112-
FOREIGN KEY ("#$modelBColumn") REFERENCES #${qualify(project.dbName, modelB.dbName)} (#${qualify(modelA.dbNameOfIdField_!)}) ON DELETE CASCADE
112+
FOREIGN KEY ("#$modelBColumn") REFERENCES #${qualify(project.dbName, modelB.dbName)} (#${qualify(modelB.dbNameOfIdField_!)}) ON DELETE CASCADE
113113
);"""
114114

115115
val modernTableCreate = sqlu"""
116116
CREATE TABLE #${qualify(project.dbName, relationTableName)} (
117117
#$aColSql,
118118
#$bColSql,
119119
FOREIGN KEY ("#$modelAColumn") REFERENCES #${qualify(project.dbName, modelA.dbName)} (#${qualify(modelA.dbNameOfIdField_!)}) ON DELETE CASCADE,
120-
FOREIGN KEY ("#$modelBColumn") REFERENCES #${qualify(project.dbName, modelB.dbName)} (#${qualify(modelA.dbNameOfIdField_!)}) ON DELETE CASCADE
120+
FOREIGN KEY ("#$modelBColumn") REFERENCES #${qualify(project.dbName, modelB.dbName)} (#${qualify(modelB.dbNameOfIdField_!)}) ON DELETE CASCADE
121121
);"""
122122

123123
val tableCreate = relation.manifestation match {

server/connectors/deploy-connector-sqlite/src/main/scala/com/prisma/deploy/connector/sqlite/database/SQLiteJdbcDeployDatabaseMutationBuilder.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,15 @@ case class SQLiteJdbcDeployDatabaseMutationBuilder(
110110
#$bColSql,
111111
PRIMARY KEY ("id"),
112112
FOREIGN KEY (#$modelAColumn) REFERENCES #${qualify(modelA.dbName)} (#${qualify(modelA.dbNameOfIdField_!)}) ON DELETE CASCADE,
113-
FOREIGN KEY (#$modelBColumn) REFERENCES #${qualify(modelB.dbName)} (#${qualify(modelA.dbNameOfIdField_!)}) ON DELETE CASCADE
113+
FOREIGN KEY (#$modelBColumn) REFERENCES #${qualify(modelB.dbName)} (#${qualify(modelB.dbNameOfIdField_!)}) ON DELETE CASCADE
114114
);"""
115115

116116
val modernTableCreate = sqlu"""
117117
CREATE TABLE #${qualify(project.dbName, relationTableName)} (
118118
#$aColSql,
119119
#$bColSql,
120120
FOREIGN KEY (#$modelAColumn) REFERENCES #${qualify(modelA.dbName)} (#${qualify(modelA.dbNameOfIdField_!)}) ON DELETE CASCADE,
121-
FOREIGN KEY (#$modelBColumn) REFERENCES #${qualify(modelB.dbName)} (#${qualify(modelA.dbNameOfIdField_!)}) ON DELETE CASCADE
121+
FOREIGN KEY (#$modelBColumn) REFERENCES #${qualify(modelB.dbName)} (#${qualify(modelB.dbNameOfIdField_!)}) ON DELETE CASCADE
122122
);"""
123123

124124
val tableCreate = relation.manifestation match {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package com.prisma.integration
2+
3+
import org.scalatest.{FlatSpec, Matchers}
4+
5+
class DeployingCustomIdNamesSpec extends FlatSpec with Matchers with IntegrationBaseSpec {
6+
7+
"Using Custom Id field names with relations" should "work" in {
8+
9+
val schema =
10+
"""type Person {
11+
| id: ID! @id
12+
| age: Int! @unique
13+
|}"""
14+
15+
val (project, _) = setupProject(schema)
16+
17+
val schema1 =
18+
"""type Game {
19+
| gameId: ID! @id
20+
| createdAt: DateTime! @createdAt
21+
| updatedAt: DateTime! @updatedAt
22+
| lastUpdatedOn: String!
23+
| players: [Player!]! @relation(link: TABLE, name: "GamePlayer")
24+
|}
25+
|
26+
|type Player {
27+
| playerId: ID! @id
28+
| createdAt: DateTime! @createdAt
29+
| updatedAt: DateTime! @updatedAt
30+
| lastUpdatedOn: String!
31+
| games: [Game!]! @relation(name: "GamePlayer")
32+
|}"""
33+
34+
deployServer.deploySchemaThatMustSucceed(project, schema1, 3, true)
35+
}
36+
37+
"Using [typename]id as a field for relations" should "work" in {
38+
39+
val schema =
40+
"""type Person {
41+
| id: ID! @id
42+
| age: Int! @unique
43+
|}"""
44+
45+
val (project, _) = setupProject(schema)
46+
47+
val schema1 =
48+
"""type Contact @db(name: "contact") {
49+
|id: Int! @id
50+
|info: String!
51+
|type: String!
52+
|customerid: Customer
53+
|}
54+
|
55+
|type Customer @db(name: "customer") {
56+
|id: Int! @id
57+
|contact: [Contact]
58+
|firstname: String!
59+
|lastname: String!
60+
|}"""
61+
62+
deployServer.deploySchemaThatMustSucceed(project, schema1, 3, true)
63+
}
64+
65+
}

0 commit comments

Comments
 (0)