Migrate: Connector error. [...] ERROR: syntax error at or near ")"

Created on 25 Feb 2020  ·  3Comments  ·  Source: prisma/migrate

Hello, after upgrading from 2.0.0-preview021 to [email protected] I get the following error when running yarn prisma2 migrate up --experimental:

(DEBUG=* yarn prisma2 migrate up --experimental --verbose in this screenshot)
image

With preview21 everything worked fine.


schema.prisma

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("POSTGRES_URL")
}

model JobOffer {
  id                  String   @default(cuid()) @id
  /// Remote API field: job_id
  remoteId            String   @unique
  title               String
  companyName         String?
  salary              String?
  startDate           DateTime
  activeSince         DateTime
  holidayAllowance    Boolean
  christmasAllowance  Boolean
  takeOverOption      Boolean
  workingPlan         String?

  contact             JobContact             @relation(references: [id])
  necessaryDegree     JobNecessaryDegree?
  locations           JobLocation[]          // m:n relation
  offerType           JobOfferType?
  textmodules         JobDetailTextmodule[]  @relation(references: [id])

  /// lowercase string composed of all searchable fields
  searchable          String  @unique
  /// lowercase string composed of zips and citynames of all locations
  searchableLocation  String
}

model JobDetailTextmodule {
  id      String  @default(cuid())  @id
  header  String
  /// Sanitized HTML output
  body    String
}

model JobLocation {
  id            String   @default(cuid()) @id
  /// Identifier composed by zip_lat_lng
  uniqueId      String   @unique

  jobOffer      JobOffer[]  // m:n relation

  zip           String
  city          String
  state         String?
  lat           Float?
  lng           Float?
}

model JobOfferType {
  /// Remote API field: ba_joboffertype
  remoteId            Int      @id
  name                String
  hasAvailableOffers  Boolean
}

model JobNecessaryDegree {
  /// Remote API field: ba_jobdegree
  remoteId            Int      @id
  name                String
  hasAvailableOffers  Boolean
}

model JobContact {
  id          String   @default(cuid()) @id
  /// Remote API field: kontaktid
  remoteId    String   @unique
  salutation  String
  email       String
  firstName   String
  lastName    String
  phone       JobContactPhone      @relation(references: [id])
  location    JobContactLocation?  @relation(references: [id])
}

model JobContactPhone {
  id          String   @default(cuid()) @id
  areaCode    String
  prefix      String
  lineNumber  String
}

model JobContactLocation {
  id      String  @default(cuid()) @id
  zip     String?
  city    String?
  street  String?
}


Full output of DEBUG=* yarn prisma2 migrate up --experimental --verbose

yarn run v1.21.1
warning package.json: No license field
$ /home/rafael/coding/job-finder/node_modules/.bin/prisma2 migrate up --experimental --verbose
2020-02-25T15:44:20.684Z prisma .env loaded from ./prisma/.env
2020-02-25T15:44:20.695Z engineCommands getConfig, override prismaPath = undefined
2020-02-25T15:44:20.708Z getos { version: 'OpenSSL 1.1.1d  10 Sep 2019\n' }
2020-02-25T15:44:20.708Z getos { ls: '' }
2020-02-25T15:44:20.709Z getos { platform: 'linux', libssl: '1.1.x' }
2020-02-25T15:44:20.758Z getos { version: 'OpenSSL 1.1.1d  10 Sep 2019\n' }
2020-02-25T15:44:20.758Z getos { ls: '' }
2020-02-25T15:44:20.758Z getos { platform: 'linux', libssl: '1.1.x' }
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:compiler initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:parser initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:compiler initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:parser initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:compiler initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:parser initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:compiler initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:parser initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:compiler initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:parser initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:compiler initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:parser initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:compiler initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:parser initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:compiler initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
Tue, 25 Feb 2020 15:44:20 GMT snapdragon:parser initializing /home/rafael/coding/job-finder/node_modules/prisma2/build/index.js
2020-02-25T15:44:20.825Z getos { version: 'OpenSSL 1.1.1d  10 Sep 2019\n' }
2020-02-25T15:44:20.825Z getos { ls: '' }
2020-02-25T15:44:20.826Z getos { platform: 'linux', libssl: '1.1.x' }
2020-02-25T15:44:20.826Z LiftEngine:rpc starting migration engine with binary: /home/rafael/coding/job-finder/node_modules/prisma2/migration-engine-debian-openssl-1.1.x
2020-02-25T15:44:20.830Z LiftEngine:rpc SENDING RPC CALL {"id":1,"jsonrpc":"2.0","method":"listMigrations","params":{"projectInfo":"","sourceConfig":"generator photon {\n  provider = \"prisma-client-js\"\n}\n\ndatasource db {\n  provider = \"postgresql\"\n  url      = env(\"POSTGRES_URL\")\n}\n\nmodel JobOffer {\n  id                  String   @default(cuid()) @id\n  /// Remote API field: job_id\n  remoteId            String   @unique\n  title               String\n  companyName         String?\n  salary              String?\n  startDate           DateTime\n  activeSince         DateTime\n  holidayAllowance    Boolean\n  christmasAllowance  Boolean\n  takeOverOption      Boolean\n  workingPlan         String?\n\n  contact             JobContact             @relation(references: [id])\n  necessaryDegree     JobNecessaryDegree?\n  locations           JobLocation[]          // m:n relation\n  offerType           JobOfferType?\n  textmodules         JobDetailTextmodule[]  @relation(references: [id])\n\n  /// lowercase string composed of all searchable fields\n  searchable          String  @unique\n  /// lowercase string composed of zips and citynames of all locations\n  searchableLocation  String\n}\n\nmodel JobDetailTextmodule {\n  id      String  @default(cuid())  @id\n  header  String\n  /// Sanitized HTML output\n  body    String\n}\n\nmodel JobLocation {\n  id            String   @default(cuid()) @id\n  /// Identifier composed by zip_lat_lng\n  uniqueId      String   @unique\n\n  jobOffer      JobOffer[]  // m:n relation\n\n  zip           String\n  city          String\n  state         String?\n  lat           Float?\n  lng           Float?\n}\n\nmodel JobOfferType {\n  /// Remote API field: ba_joboffertype\n  remoteId            Int      @id\n  name                String\n  hasAvailableOffers  Boolean\n}\n\nmodel JobNecessaryDegree {\n  /// Remote API field: ba_jobdegree\n  remoteId            Int      @id\n  name                String\n  hasAvailableOffers  Boolean\n}\n\nmodel JobContact {\n  id          String   @default(cuid()) @id\n  /// Remote API field: kontaktid\n  remoteId    String   @unique\n  salutation  String\n  email       String\n  firstName   String\n  lastName    String\n  phone       JobContactPhone      @relation(references: [id])\n  location    JobContactLocation?  @relation(references: [id])\n}\n\nmodel JobContactPhone {\n  id          String   @default(cuid()) @id\n  areaCode    String\n  prefix      String\n  lineNumber  String\n}\n\nmodel JobContactLocation {\n  id      String  @default(cuid()) @id\n  zip     String?\n  city    String?\n  street  String?\n}\n"}}
2020-02-25T15:44:20.837Z LiftEngine:stderr Feb 25 16:44:20.837  INFO migration_engine: Starting migration engine RPC server git_hash="f608db3b9e4f50f9a384356e532357b0a525969a"
2020-02-25T15:44:20.851Z LiftEngine:stderr Feb 25 16:44:20.851  INFO quaint::single: Starting a postgresql pool with 1 connections.
2020-02-25T15:44:20.867Z LiftEngine:stderr Feb 25 16:44:20.866  INFO ListMigrations: migration_core::commands::list_migrations: Returning 0 migrations (0 pending).
🏋️‍  migrate up

Datamodel that will initialize the db:

generator photon {
  provider = "photonjs"
}

datasource db {
  provider = "postgresql"
  url = "***"
}

model JobOffer {
  id                  String   @default(cuid()) @id
  /// Remote API field: jobid
  remoteId           String   @unique
  title               String
  companyName         String?
  salary              String?
  startDate           DateTime
  activeSince         DateTime
  holidayAllowance    Boolean
  christmasAllowance  Boolean
  takeOverOption      Boolean
  workingPlan         String?

  contact             JobContact             @relation(references: [id])
  necessaryDegree     JobNecessaryDegree?
  locations           JobLocation[]          // m:n relation
  offerType           JobOfferType?
  textmodules         JobDetailTextmodule[]  @relation(references: [id])

  /// lowercase string composed of all searchable fields
  searchable          String  @unique
  /// lowercase string composed of zips and citynames of all locations
  searchableLocation  String
}

model JobDetailTextmodule {
  id      String  @default(cuid())  @id
  header  String
  /// Sanitized HTML output
  body    String
}

model JobLocation {
  id            String   @default(cuid()) @id
  /// Identifier composed by zip_lat_lng
  uniqueId      String   @unique

  jobOffer      JobOffer[]  // m:n relation

  zip           String
  city          String
  state         String?
  lat           Float?
  lng           Float?
}

model JobOfferType {
  /// Remote API field: ba_joboffertype
  remoteId           Int      @id
  name                String
  hasAvailableOffers  Boolean
}

model JobNecessaryDegree {
  /// Remote API field: ba_jobdegree
  remoteId           Int      @id
  name                String
  hasAvailableOffers  Boolean
}

model JobContact {
  id          String   @default(cuid()) @id
  /// Remote API field: kontaktid
  remoteId   String   @unique
  salutation  String
  email       String
  firstName   String
  lastName    String
  phone       JobContactPhone      @relation(references: [id])
  location    JobContactLocation?  @relation(references: [id])
}

model JobContactPhone {
  id          String   @default(cuid()) @id
  areaCode    String
  prefix      String
  lineNumber  String
}

model JobContactLocation {
  id      String  @default(cuid()) @id
  zip     String?
  city    String?
  street  String?
}


Checking the datasource for potential data loss...
2020-02-25T15:44:20.869Z LiftEngine:rpc SENDING RPC CALL {"id":2,"jsonrpc":"2.0","method":"calculateDatabaseSteps","params":{"projectInfo":"","assumeToBeApplied":[],"stepsToApply":[{"tag":"CreateSource","source":"db"},{"tag":"CreateArgument","location":{"tag":"Source","source":"db"},"argument":"provider","value":"\"postgresql\""},{"tag":"CreateArgument","location":{"tag":"Source","source":"db"},"argument":"url","value":"env(\"POSTGRES_URL\")"},{"tag":"CreateModel","model":"JobOffer"},{"tag":"CreateField","model":"JobOffer","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobOffer","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobOffer","field":"remoteId","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"remoteId"},"directive":"unique"}},{"tag":"CreateField","model":"JobOffer","field":"title","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"companyName","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"salary","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"startDate","type":"DateTime","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"activeSince","type":"DateTime","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"holidayAllowance","type":"Boolean","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"christmasAllowance","type":"Boolean","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"takeOverOption","type":"Boolean","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"workingPlan","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"contact","type":"JobContact","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"contact"},"directive":"relation"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobOffer","field":"contact"},"directive":"relation"},"argument":"references","value":"[id]"},{"tag":"CreateField","model":"JobOffer","field":"necessaryDegree","type":"JobNecessaryDegree","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"locations","type":"JobLocation","arity":"List"},{"tag":"CreateField","model":"JobOffer","field":"offerType","type":"JobOfferType","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"textmodules","type":"JobDetailTextmodule","arity":"List"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"textmodules"},"directive":"relation"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobOffer","field":"textmodules"},"directive":"relation"},"argument":"references","value":"[id]"},{"tag":"CreateField","model":"JobOffer","field":"searchable","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"searchable"},"directive":"unique"}},{"tag":"CreateField","model":"JobOffer","field":"searchableLocation","type":"String","arity":"Required"},{"tag":"CreateModel","model":"JobDetailTextmodule"},{"tag":"CreateField","model":"JobDetailTextmodule","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobDetailTextmodule","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobDetailTextmodule","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobDetailTextmodule","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobDetailTextmodule","field":"header","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobDetailTextmodule","field":"body","type":"String","arity":"Required"},{"tag":"CreateModel","model":"JobLocation"},{"tag":"CreateField","model":"JobLocation","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobLocation","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobLocation","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobLocation","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobLocation","field":"uniqueId","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobLocation","field":"uniqueId"},"directive":"unique"}},{"tag":"CreateField","model":"JobLocation","field":"zip","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobLocation","field":"city","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobLocation","field":"state","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobLocation","field":"lat","type":"Float","arity":"Optional"},{"tag":"CreateField","model":"JobLocation","field":"lng","type":"Float","arity":"Optional"},{"tag":"CreateModel","model":"JobOfferType"},{"tag":"CreateField","model":"JobOfferType","field":"remoteId","type":"Int","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOfferType","field":"remoteId"},"directive":"id"}},{"tag":"CreateField","model":"JobOfferType","field":"name","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobOfferType","field":"hasAvailableOffers","type":"Boolean","arity":"Required"},{"tag":"CreateModel","model":"JobNecessaryDegree"},{"tag":"CreateField","model":"JobNecessaryDegree","field":"remoteId","type":"Int","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobNecessaryDegree","field":"remoteId"},"directive":"id"}},{"tag":"CreateField","model":"JobNecessaryDegree","field":"name","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobNecessaryDegree","field":"hasAvailableOffers","type":"Boolean","arity":"Required"},{"tag":"CreateModel","model":"JobContact"},{"tag":"CreateField","model":"JobContact","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContact","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobContact","field":"remoteId","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"remoteId"},"directive":"unique"}},{"tag":"CreateField","model":"JobContact","field":"salutation","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContact","field":"email","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContact","field":"firstName","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContact","field":"lastName","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContact","field":"phone","type":"JobContactPhone","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"phone"},"directive":"relation"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContact","field":"phone"},"directive":"relation"},"argument":"references","value":"[id]"},{"tag":"CreateField","model":"JobContact","field":"location","type":"JobContactLocation","arity":"Optional"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"location"},"directive":"relation"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContact","field":"location"},"directive":"relation"},"argument":"references","value":"[id]"},{"tag":"CreateModel","model":"JobContactPhone"},{"tag":"CreateField","model":"JobContactPhone","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContactPhone","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContactPhone","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContactPhone","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobContactPhone","field":"areaCode","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContactPhone","field":"prefix","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContactPhone","field":"lineNumber","type":"String","arity":"Required"},{"tag":"CreateModel","model":"JobContactLocation"},{"tag":"CreateField","model":"JobContactLocation","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContactLocation","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContactLocation","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContactLocation","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobContactLocation","field":"zip","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobContactLocation","field":"city","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobContactLocation","field":"street","type":"String","arity":"Optional"}],"sourceConfig":"generator photon {\n  provider = \"prisma-client-js\"\n}\n\ndatasource db {\n  provider = \"postgresql\"\n  url      = env(\"POSTGRES_URL\")\n}\n\nmodel JobOffer {\n  id                  String   @default(cuid()) @id\n  /// Remote API field: job_id\n  remoteId            String   @unique\n  title               String\n  companyName         String?\n  salary              String?\n  startDate           DateTime\n  activeSince         DateTime\n  holidayAllowance    Boolean\n  christmasAllowance  Boolean\n  takeOverOption      Boolean\n  workingPlan         String?\n\n  contact             JobContact             @relation(references: [id])\n  necessaryDegree     JobNecessaryDegree?\n  locations           JobLocation[]          // m:n relation\n  offerType           JobOfferType?\n  textmodules         JobDetailTextmodule[]  @relation(references: [id])\n\n  /// lowercase string composed of all searchable fields\n  searchable          String  @unique\n  /// lowercase string composed of zips and citynames of all locations\n  searchableLocation  String\n}\n\nmodel JobDetailTextmodule {\n  id      String  @default(cuid())  @id\n  header  String\n  /// Sanitized HTML output\n  body    String\n}\n\nmodel JobLocation {\n  id            String   @default(cuid()) @id\n  /// Identifier composed by zip_lat_lng\n  uniqueId      String   @unique\n\n  jobOffer      JobOffer[]  // m:n relation\n\n  zip           String\n  city          String\n  state         String?\n  lat           Float?\n  lng           Float?\n}\n\nmodel JobOfferType {\n  /// Remote API field: ba_joboffertype\n  remoteId            Int      @id\n  name                String\n  hasAvailableOffers  Boolean\n}\n\nmodel JobNecessaryDegree {\n  /// Remote API field: ba_jobdegree\n  remoteId            Int      @id\n  name                String\n  hasAvailableOffers  Boolean\n}\n\nmodel JobContact {\n  id          String   @default(cuid()) @id\n  /// Remote API field: kontaktid\n  remoteId    String   @unique\n  salutation  String\n  email       String\n  firstName   String\n  lastName    String\n  phone       JobContactPhone      @relation(references: [id])\n  location    JobContactLocation?  @relation(references: [id])\n}\n\nmodel JobContactPhone {\n  id          String   @default(cuid()) @id\n  areaCode    String\n  prefix      String\n  lineNumber  String\n}\n\nmodel JobContactLocation {\n  id      String  @default(cuid()) @id\n  zip     String?\n  city    String?\n  street  String?\n}\n"}}
2020-02-25T15:44:20.904Z LiftEngine:rpc SENDING RPC CALL {"id":3,"jsonrpc":"2.0","method":"calculateDatabaseSteps","params":{"projectInfo":"","assumeToBeApplied":[{"tag":"CreateSource","source":"db"},{"tag":"CreateArgument","location":{"tag":"Source","source":"db"},"argument":"provider","value":"\"postgresql\""},{"tag":"CreateArgument","location":{"tag":"Source","source":"db"},"argument":"url","value":"env(\"POSTGRES_URL\")"},{"tag":"CreateModel","model":"JobOffer"},{"tag":"CreateField","model":"JobOffer","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobOffer","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobOffer","field":"remoteId","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"remoteId"},"directive":"unique"}},{"tag":"CreateField","model":"JobOffer","field":"title","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"companyName","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"salary","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"startDate","type":"DateTime","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"activeSince","type":"DateTime","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"holidayAllowance","type":"Boolean","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"christmasAllowance","type":"Boolean","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"takeOverOption","type":"Boolean","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"workingPlan","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"contact","type":"JobContact","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"contact"},"directive":"relation"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobOffer","field":"contact"},"directive":"relation"},"argument":"references","value":"[id]"},{"tag":"CreateField","model":"JobOffer","field":"necessaryDegree","type":"JobNecessaryDegree","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"locations","type":"JobLocation","arity":"List"},{"tag":"CreateField","model":"JobOffer","field":"offerType","type":"JobOfferType","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"textmodules","type":"JobDetailTextmodule","arity":"List"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"textmodules"},"directive":"relation"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobOffer","field":"textmodules"},"directive":"relation"},"argument":"references","value":"[id]"},{"tag":"CreateField","model":"JobOffer","field":"searchable","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"searchable"},"directive":"unique"}},{"tag":"CreateField","model":"JobOffer","field":"searchableLocation","type":"String","arity":"Required"},{"tag":"CreateModel","model":"JobDetailTextmodule"},{"tag":"CreateField","model":"JobDetailTextmodule","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobDetailTextmodule","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobDetailTextmodule","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobDetailTextmodule","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobDetailTextmodule","field":"header","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobDetailTextmodule","field":"body","type":"String","arity":"Required"},{"tag":"CreateModel","model":"JobLocation"},{"tag":"CreateField","model":"JobLocation","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobLocation","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobLocation","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobLocation","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobLocation","field":"uniqueId","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobLocation","field":"uniqueId"},"directive":"unique"}},{"tag":"CreateField","model":"JobLocation","field":"zip","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobLocation","field":"city","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobLocation","field":"state","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobLocation","field":"lat","type":"Float","arity":"Optional"},{"tag":"CreateField","model":"JobLocation","field":"lng","type":"Float","arity":"Optional"},{"tag":"CreateModel","model":"JobOfferType"},{"tag":"CreateField","model":"JobOfferType","field":"remoteId","type":"Int","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOfferType","field":"remoteId"},"directive":"id"}},{"tag":"CreateField","model":"JobOfferType","field":"name","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobOfferType","field":"hasAvailableOffers","type":"Boolean","arity":"Required"},{"tag":"CreateModel","model":"JobNecessaryDegree"},{"tag":"CreateField","model":"JobNecessaryDegree","field":"remoteId","type":"Int","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobNecessaryDegree","field":"remoteId"},"directive":"id"}},{"tag":"CreateField","model":"JobNecessaryDegree","field":"name","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobNecessaryDegree","field":"hasAvailableOffers","type":"Boolean","arity":"Required"},{"tag":"CreateModel","model":"JobContact"},{"tag":"CreateField","model":"JobContact","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContact","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobContact","field":"remoteId","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"remoteId"},"directive":"unique"}},{"tag":"CreateField","model":"JobContact","field":"salutation","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContact","field":"email","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContact","field":"firstName","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContact","field":"lastName","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContact","field":"phone","type":"JobContactPhone","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"phone"},"directive":"relation"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContact","field":"phone"},"directive":"relation"},"argument":"references","value":"[id]"},{"tag":"CreateField","model":"JobContact","field":"location","type":"JobContactLocation","arity":"Optional"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"location"},"directive":"relation"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContact","field":"location"},"directive":"relation"},"argument":"references","value":"[id]"},{"tag":"CreateModel","model":"JobContactPhone"},{"tag":"CreateField","model":"JobContactPhone","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContactPhone","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContactPhone","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContactPhone","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobContactPhone","field":"areaCode","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContactPhone","field":"prefix","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContactPhone","field":"lineNumber","type":"String","arity":"Required"},{"tag":"CreateModel","model":"JobContactLocation"},{"tag":"CreateField","model":"JobContactLocation","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContactLocation","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContactLocation","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContactLocation","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobContactLocation","field":"zip","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobContactLocation","field":"city","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobContactLocation","field":"street","type":"String","arity":"Optional"}],"stepsToApply":[{"tag":"CreateField","model":"JobLocation","field":"jobOffer","type":"JobOffer","arity":"List"}],"sourceConfig":"generator photon {\n  provider = \"prisma-client-js\"\n}\n\ndatasource db {\n  provider = \"postgresql\"\n  url      = env(\"POSTGRES_URL\")\n}\n\nmodel JobOffer {\n  id                  String   @default(cuid()) @id\n  /// Remote API field: job_id\n  remoteId            String   @unique\n  title               String\n  companyName         String?\n  salary              String?\n  startDate           DateTime\n  activeSince         DateTime\n  holidayAllowance    Boolean\n  christmasAllowance  Boolean\n  takeOverOption      Boolean\n  workingPlan         String?\n\n  contact             JobContact             @relation(references: [id])\n  necessaryDegree     JobNecessaryDegree?\n  locations           JobLocation[]          // m:n relation\n  offerType           JobOfferType?\n  textmodules         JobDetailTextmodule[]  @relation(references: [id])\n\n  /// lowercase string composed of all searchable fields\n  searchable          String  @unique\n  /// lowercase string composed of zips and citynames of all locations\n  searchableLocation  String\n}\n\nmodel JobDetailTextmodule {\n  id      String  @default(cuid())  @id\n  header  String\n  /// Sanitized HTML output\n  body    String\n}\n\nmodel JobLocation {\n  id            String   @default(cuid()) @id\n  /// Identifier composed by zip_lat_lng\n  uniqueId      String   @unique\n\n  jobOffer      JobOffer[]  // m:n relation\n\n  zip           String\n  city          String\n  state         String?\n  lat           Float?\n  lng           Float?\n}\n\nmodel JobOfferType {\n  /// Remote API field: ba_joboffertype\n  remoteId            Int      @id\n  name                String\n  hasAvailableOffers  Boolean\n}\n\nmodel JobNecessaryDegree {\n  /// Remote API field: ba_jobdegree\n  remoteId            Int      @id\n  name                String\n  hasAvailableOffers  Boolean\n}\n\nmodel JobContact {\n  id          String   @default(cuid()) @id\n  /// Remote API field: kontaktid\n  remoteId    String   @unique\n  salutation  String\n  email       String\n  firstName   String\n  lastName    String\n  phone       JobContactPhone      @relation(references: [id])\n  location    JobContactLocation?  @relation(references: [id])\n}\n\nmodel JobContactPhone {\n  id          String   @default(cuid()) @id\n  areaCode    String\n  prefix      String\n  lineNumber  String\n}\n\nmodel JobContactLocation {\n  id      String  @default(cuid()) @id\n  zip     String?\n  city    String?\n  street  String?\n}\n"}}

Database Changes:

Migration                                       Database actions           Statu
s

20191226033855-initial-launch                   8 CreateTable statements.
20200129224939-job-offer-job-location-relation  9 CreateTable statements.

You can get the detailed db changes with prisma2 migrate up --experimental --ver
bose
Or read about them in the ./migrations/MIGRATION_ID/README.md
2020-02-25T15:44:20.929Z LiftEngine:rpc SENDING RPC CALL {"id":4,"jsonrpc":"2.0","method":"applyMigration","params":{"projectInfo":"","force":true,"migrationId":"20191226033855-initial-launch","steps":[{"tag":"CreateSource","source":"db"},{"tag":"CreateArgument","location":{"tag":"Source","source":"db"},"argument":"provider","value":"\"postgresql\""},{"tag":"CreateArgument","location":{"tag":"Source","source":"db"},"argument":"url","value":"env(\"POSTGRES_URL\")"},{"tag":"CreateModel","model":"JobOffer"},{"tag":"CreateField","model":"JobOffer","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobOffer","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobOffer","field":"remoteId","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"remoteId"},"directive":"unique"}},{"tag":"CreateField","model":"JobOffer","field":"title","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"companyName","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"salary","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"startDate","type":"DateTime","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"activeSince","type":"DateTime","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"holidayAllowance","type":"Boolean","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"christmasAllowance","type":"Boolean","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"takeOverOption","type":"Boolean","arity":"Required"},{"tag":"CreateField","model":"JobOffer","field":"workingPlan","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"contact","type":"JobContact","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"contact"},"directive":"relation"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobOffer","field":"contact"},"directive":"relation"},"argument":"references","value":"[id]"},{"tag":"CreateField","model":"JobOffer","field":"necessaryDegree","type":"JobNecessaryDegree","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"locations","type":"JobLocation","arity":"List"},{"tag":"CreateField","model":"JobOffer","field":"offerType","type":"JobOfferType","arity":"Optional"},{"tag":"CreateField","model":"JobOffer","field":"textmodules","type":"JobDetailTextmodule","arity":"List"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"textmodules"},"directive":"relation"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobOffer","field":"textmodules"},"directive":"relation"},"argument":"references","value":"[id]"},{"tag":"CreateField","model":"JobOffer","field":"searchable","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOffer","field":"searchable"},"directive":"unique"}},{"tag":"CreateField","model":"JobOffer","field":"searchableLocation","type":"String","arity":"Required"},{"tag":"CreateModel","model":"JobDetailTextmodule"},{"tag":"CreateField","model":"JobDetailTextmodule","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobDetailTextmodule","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobDetailTextmodule","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobDetailTextmodule","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobDetailTextmodule","field":"header","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobDetailTextmodule","field":"body","type":"String","arity":"Required"},{"tag":"CreateModel","model":"JobLocation"},{"tag":"CreateField","model":"JobLocation","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobLocation","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobLocation","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobLocation","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobLocation","field":"uniqueId","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobLocation","field":"uniqueId"},"directive":"unique"}},{"tag":"CreateField","model":"JobLocation","field":"zip","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobLocation","field":"city","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobLocation","field":"state","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobLocation","field":"lat","type":"Float","arity":"Optional"},{"tag":"CreateField","model":"JobLocation","field":"lng","type":"Float","arity":"Optional"},{"tag":"CreateModel","model":"JobOfferType"},{"tag":"CreateField","model":"JobOfferType","field":"remoteId","type":"Int","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobOfferType","field":"remoteId"},"directive":"id"}},{"tag":"CreateField","model":"JobOfferType","field":"name","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobOfferType","field":"hasAvailableOffers","type":"Boolean","arity":"Required"},{"tag":"CreateModel","model":"JobNecessaryDegree"},{"tag":"CreateField","model":"JobNecessaryDegree","field":"remoteId","type":"Int","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobNecessaryDegree","field":"remoteId"},"directive":"id"}},{"tag":"CreateField","model":"JobNecessaryDegree","field":"name","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobNecessaryDegree","field":"hasAvailableOffers","type":"Boolean","arity":"Required"},{"tag":"CreateModel","model":"JobContact"},{"tag":"CreateField","model":"JobContact","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContact","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobContact","field":"remoteId","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"remoteId"},"directive":"unique"}},{"tag":"CreateField","model":"JobContact","field":"salutation","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContact","field":"email","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContact","field":"firstName","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContact","field":"lastName","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContact","field":"phone","type":"JobContactPhone","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"phone"},"directive":"relation"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContact","field":"phone"},"directive":"relation"},"argument":"references","value":"[id]"},{"tag":"CreateField","model":"JobContact","field":"location","type":"JobContactLocation","arity":"Optional"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContact","field":"location"},"directive":"relation"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContact","field":"location"},"directive":"relation"},"argument":"references","value":"[id]"},{"tag":"CreateModel","model":"JobContactPhone"},{"tag":"CreateField","model":"JobContactPhone","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContactPhone","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContactPhone","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContactPhone","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobContactPhone","field":"areaCode","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContactPhone","field":"prefix","type":"String","arity":"Required"},{"tag":"CreateField","model":"JobContactPhone","field":"lineNumber","type":"String","arity":"Required"},{"tag":"CreateModel","model":"JobContactLocation"},{"tag":"CreateField","model":"JobContactLocation","field":"id","type":"String","arity":"Required"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContactLocation","field":"id"},"directive":"default"}},{"tag":"CreateArgument","location":{"tag":"Directive","path":{"tag":"Field","model":"JobContactLocation","field":"id"},"directive":"default"},"argument":"","value":"cuid()"},{"tag":"CreateDirective","location":{"path":{"tag":"Field","model":"JobContactLocation","field":"id"},"directive":"id"}},{"tag":"CreateField","model":"JobContactLocation","field":"zip","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobContactLocation","field":"city","type":"String","arity":"Optional"},{"tag":"CreateField","model":"JobContactLocation","field":"street","type":"String","arity":"Optional"}],"sourceConfig":"generator photon {\n  provider = \"prisma-client-js\"\n}\n\ndatasource db {\n  provider = \"postgresql\"\n  url      = env(\"POSTGRES_URL\")\n}\n\nmodel JobOffer {\n  id                  String   @default(cuid()) @id\n  /// Remote API field: job_id\n  remoteId            String   @unique\n  title               String\n  companyName         String?\n  salary              String?\n  startDate           DateTime\n  activeSince         DateTime\n  holidayAllowance    Boolean\n  christmasAllowance  Boolean\n  takeOverOption      Boolean\n  workingPlan         String?\n\n  contact             JobContact             @relation(references: [id])\n  necessaryDegree     JobNecessaryDegree?\n  locations           JobLocation[]          // m:n relation\n  offerType           JobOfferType?\n  textmodules         JobDetailTextmodule[]  @relation(references: [id])\n\n  /// lowercase string composed of all searchable fields\n  searchable          String  @unique\n  /// lowercase string composed of zips and citynames of all locations\n  searchableLocation  String\n}\n\nmodel JobDetailTextmodule {\n  id      String  @default(cuid())  @id\n  header  String\n  /// Sanitized HTML output\n  body    String\n}\n\nmodel JobLocation {\n  id            String   @default(cuid()) @id\n  /// Identifier composed by zip_lat_lng\n  uniqueId      String   @unique\n\n  jobOffer      JobOffer[]  // m:n relation\n\n  zip           String\n  city          String\n  state         String?\n  lat           Float?\n  lng           Float?\n}\n\nmodel JobOfferType {\n  /// Remote API field: ba_joboffertype\n  remoteId            Int      @id\n  name                String\n  hasAvailableOffers  Boolean\n}\n\nmodel JobNecessaryDegree {\n  /// Remote API field: ba_jobdegree\n  remoteId            Int      @id\n  name                String\n  hasAvailableOffers  Boolean\n}\n\nmodel JobContact {\n  id          String   @default(cuid()) @id\n  /// Remote API field: kontaktid\n  remoteId    String   @unique\n  salutation  String\n  email       String\n  firstName   String\n  lastName    String\n  phone       JobContactPhone      @relation(references: [id])\n  location    JobContactLocation?  @relation(references: [id])\n}\n\nmodel JobContactPhone {\n  id          String   @default(cuid()) @id\n  areaCode    String\n  prefix      String\n  lineNumber  String\n}\n\nmodel JobContactLocation {\n  id      String  @default(cuid()) @id\n  zip     String?\n  city    String?\n  street  String?\n}\n"}}
2020-02-25T15:44:21.088Z LiftEngine:rpc {
  jsonrpc: '2.0',
  error: {
    code: 4466,
    message: 'An error happened. Check the data field for details.',
    data: {
      is_panic: false,
      message: 'Failure during a migration command: Connector error. (error: Error querying the database: Error querying the database: Error querying the database: db error: ERROR: syntax error at or near ")")',
      backtrace: null
    }
  },
  id: 4
}
Error: Error: Failure during a migration command: Connector error. (error: Error querying the database: Error querying the database: Error querying the database: db error: ERROR: syntax error at or near ")")
    at Object.<anonymous> (/home/rafael/coding/job-finder/node_modules/prisma2/build/index.js:2:70768)
    at LiftEngine.handleResponse (/home/rafael/coding/job-finder/node_modules/prisma2/build/index.js:2:68461)
    at LineStream.<anonymous> (/home/rafael/coding/job-finder/node_modules/prisma2/build/index.js:2:70426)
    at LineStream.emit (events.js:321:20)
    at LineStream.EventEmitter.emit (domain.js:485:12)
    at addChunk (_stream_readable.js:297:12)
    at readableAddChunk (_stream_readable.js:273:9)
    at LineStream.Readable.push (_stream_readable.js:214:10)
    at LineStream.Transform.push (_stream_transform.js:152:32)
    at LineStream._pushBuffer (/home/rafael/coding/job-finder/node_modules/prisma2/build/index.js:2:413585)

I've also submitted the error report.

bu2-confirmed kinbug

Most helpful comment

It's working with beta.1 now, thank you for looking into this!

All 3 comments

I can reproduce this in alpha [email protected], binary version: 6cf3607cbc7213fac25b732e5323089fdd824611.

I just tried to reproduce this with the latest release (beta 1) but could not get to the crash. Can you try and see if it still happens for you? Here is the schema I used, adapted to the new relations syntax:

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("POSTGRES_URL")
}

model JobOffer {
  id                  String   @default(cuid()) @id
  /// Remote API field: job_id
  remoteId            String   @unique
  title               String
  companyName         String?
  salary              String?
  startDate           DateTime
  activeSince         DateTime
  holidayAllowance    Boolean
  christmasAllowance  Boolean
  takeOverOption      Boolean
  workingPlan         String?

  contactId             String
  contact             JobContact             @relation(fields: [contactId], references: [id])
  necessaryDegreeId   Int?
  necessaryDegree     JobNecessaryDegree? @relation(fields: [necessaryDegreeId], references: [remoteId])
  locations           JobLocation[]          // m:n relation
  offerType           JobOfferType?
  textmodules         JobDetailTextmodule[]  @relation(references: [id])

  /// lowercase string composed of all searchable fields
  searchable          String  @unique
  /// lowercase string composed of zips and citynames of all locations
  searchableLocation  String
}

model JobDetailTextmodule {
  id      String  @default(cuid())  @id
  header  String
  /// Sanitized HTML output
  body    String
}

model JobLocation {
  id            String   @default(cuid()) @id
  /// Identifier composed by zip_lat_lng
  uniqueId      String   @unique

  jobOffer      JobOffer[]  // m:n relation

  zip           String
  city          String
  state         String?
  lat           Float?
  lng           Float?
}

model JobOfferType {
  /// Remote API field: ba_joboffertype
  remoteId            Int      @id
  name                String
  hasAvailableOffers  Boolean
}

model JobNecessaryDegree {
  /// Remote API field: ba_jobdegree
  remoteId            Int      @id
  name                String
  hasAvailableOffers  Boolean
}

model JobContact {
  id          String   @default(cuid()) @id
  /// Remote API field: kontaktid
  remoteId    String   @unique
  salutation  String
  email       String
  firstName   String
  lastName    String
  phoneId String
  phone       JobContactPhone      @relation(fields: [phoneId], references: [id])
  locationId String?
  location    JobContactLocation?  @relation(fields: [locationId], references: [id])
}

model JobContactPhone {
  id          String   @default(cuid()) @id
  areaCode    String
  prefix      String
  lineNumber  String
}

model JobContactLocation {
  id      String  @default(cuid()) @id
  zip     String?
  city    String?
  street  String?
}

It's working with beta.1 now, thank you for looking into this!

Was this page helpful?
0 / 5 - 0 ratings