diff --git a/typo-tester-anorm/src/scala/adventureworks/DomainInsert.scala b/typo-tester-anorm/src/scala/adventureworks/DomainInsert.scala index 24fa26dba..3906b94e0 100644 --- a/typo-tester-anorm/src/scala/adventureworks/DomainInsert.scala +++ b/typo-tester-anorm/src/scala/adventureworks/DomainInsert.scala @@ -1,6 +1,6 @@ package adventureworks -import adventureworks.public.{AccountNumber, Flag, Mydomain, Name, NameStyle, Phone, ShortText} +import adventureworks.public.* import scala.util.Random @@ -12,4 +12,5 @@ object DomainInsert extends TestDomainInsert { override def publicNameStyle(random: Random): NameStyle = NameStyle(random.nextBoolean()) override def publicPhone(random: Random): Phone = Phone(random.nextString(10)) override def publicShortText(random: Random): ShortText = ShortText(random.nextString(10)) + override def publicOrderNumber(random: Random): OrderNumber = OrderNumber(random.nextString(10)) } diff --git a/typo-tester-doobie/src/scala/adventureworks/DomainInsert.scala b/typo-tester-doobie/src/scala/adventureworks/DomainInsert.scala index 43a079ff2..3906b94e0 100644 --- a/typo-tester-doobie/src/scala/adventureworks/DomainInsert.scala +++ b/typo-tester-doobie/src/scala/adventureworks/DomainInsert.scala @@ -12,4 +12,5 @@ object DomainInsert extends TestDomainInsert { override def publicNameStyle(random: Random): NameStyle = NameStyle(random.nextBoolean()) override def publicPhone(random: Random): Phone = Phone(random.nextString(10)) override def publicShortText(random: Random): ShortText = ShortText(random.nextString(10)) + override def publicOrderNumber(random: Random): OrderNumber = OrderNumber(random.nextString(10)) } diff --git a/typo-tester-zio-jdbc/src/scala/adventureworks/DomainInsert.scala b/typo-tester-zio-jdbc/src/scala/adventureworks/DomainInsert.scala index 43a079ff2..3906b94e0 100644 --- a/typo-tester-zio-jdbc/src/scala/adventureworks/DomainInsert.scala +++ b/typo-tester-zio-jdbc/src/scala/adventureworks/DomainInsert.scala @@ -12,4 +12,5 @@ object DomainInsert extends TestDomainInsert { override def publicNameStyle(random: Random): NameStyle = NameStyle(random.nextBoolean()) override def publicPhone(random: Random): Phone = Phone(random.nextString(10)) override def publicShortText(random: Random): ShortText = ShortText(random.nextString(10)) + override def publicOrderNumber(random: Random): OrderNumber = OrderNumber(random.nextString(10)) } diff --git a/typo/src/scala/typo/internal/ComputedTestInserts.scala b/typo/src/scala/typo/internal/ComputedTestInserts.scala index ece6befeb..8075b88e3 100644 --- a/typo/src/scala/typo/internal/ComputedTestInserts.scala +++ b/typo/src/scala/typo/internal/ComputedTestInserts.scala @@ -10,15 +10,23 @@ object ComputedTestInserts { val random: sc.Ident = sc.Ident("random") val domainInsert: sc.Ident = sc.Ident("domainInsert") - def apply(projectName: String, options: InternalOptions, customTypes: CustomTypes, domains: List[ComputedDomain], enums: List[ComputedStringEnum], computedTables: Iterable[ComputedTable]) = { - val tablesByName: Map[db.RelationName, ComputedTable] = - computedTables.iterator.map(x => x.dbTable.name -> x).toMap + def apply( + projectName: String, + options: InternalOptions, + // global data + customTypes: CustomTypes, + domains: List[ComputedDomain], + enums: List[ComputedStringEnum], + allTablesByName: Map[db.RelationName, ComputedTable], + // project data + tables: Iterable[ComputedTable] + ): ComputedTestInserts = { val enumsByName: Map[sc.Type, ComputedStringEnum] = enums.iterator.map(x => x.tpe -> x).toMap val maybeDomainMethods: Option[GenerateDomainMethods] = GenerateDomainMethod - .of(domains, computedTables) + .of(domains, tables) .map { methods => val tpe = sc.Type.Qualified(options.pkg / sc.Ident(s"${Naming.titleCase(projectName)}TestDomainInsert")) GenerateDomainMethods(tpe, methods) @@ -106,12 +114,12 @@ object ComputedTestInserts { new ComputedTestInserts( sc.Type.Qualified(options.pkg / sc.Ident(s"${Naming.titleCase(projectName)}TestInsert")), - computedTables.collect { + tables.collect { case table if !options.readonlyRepo.include(table.dbTable.name) => val hasConstraints: Set[db.ColName] = table.dbTable.cols.iterator.flatMap(_.constraints.flatMap(_.columns)).toSet - FkAnalysis(tablesByName, table).createWithFkIdsUnsavedRowOrRow match { + FkAnalysis(allTablesByName, table).createWithFkIdsUnsavedRowOrRow match { case Some(colsFromFks) => val valuesFromFk: List[(sc.Ident, sc.Code)] = colsFromFks.allColumns.toList.map { col => diff --git a/typo/src/scala/typo/internal/generate.scala b/typo/src/scala/typo/internal/generate.scala index f02eb6892..ef42dba1c 100644 --- a/typo/src/scala/typo/internal/generate.scala +++ b/typo/src/scala/typo/internal/generate.scala @@ -131,7 +131,7 @@ object generate { val keptTables = computedRelations.collect { case x: ComputedTable if options.enableTestInserts.include(x.dbTable.name) && keptTypes(x.names.RepoImplName) => x } if (keptTables.nonEmpty) { - val computed = ComputedTestInserts(project.name, options, customTypes, domains, enums, keptTables) + val computed = ComputedTestInserts(project.name, options, customTypes, domains, enums, computedRelationsByName, keptTables) FileTestInserts(computed, dbLib) } else Nil case _ => Nil