keystonejs / keystone

The superpowered headless CMS for Node.js — built with GraphQL and React
https://keystonejs.com
MIT License
9.14k stars 1.15k forks source link

Scheme ERROR with awkward name #6495

Closed DmitryKvant closed 3 years ago

DmitryKvant commented 3 years ago

Bug report

import { createSchema, list } from '@keystone-next/keystone';

const schemaTemplate = <any>{
  User: list({
    ui: {
      listView: {
        initialColumns: ['name'],
      },
    },
    fields: {
      name: text({ isRequired: true }),
      email: text({
        isRequired: true,
        isIndexed: 'unique',
        isFilterable: true,
      }),
      password: password({ isRequired: true }),
    },
  })
};

schemaTemplate['s1_test.transaction'] = list({
  fields: {
    test: text(),
  },
});

export const lists = createSchema(schemaTemplate);

return error

SyntaxError: Syntax Error: Cannot parse the unexpected character ".". (19:16)
  17 |   deleteUser(where: UserWhereUniqueInput!): User
  18 |   deleteUsers(where: [UserWhereUniqueInput!]!): [User]
> 19 |   creates1_test.transaction(data: s1_test.transactionCreateInput!): s1_test.transaction
     |                ^
  20 |   createS1Test.transactions(data: [s1_test.transactionCreateInput!]!): [s1_test.transaction]
  21 |   updates1_test.transaction(where: s1_test.transactionWhereUniqueInput!, data: s1_test.transactionUpdateInput!): s1_test.transaction
  22 |   updateS1Test.transactions(data: [s1_test.transactionUpdateArgs!]!): [s1_test.transaction]
    at e (/Users/dmitrykvant/Projects/dringo-back/dringo-admin/node_modules/prettier/parser-graphql.js:1:319)
    at /Users/dmitrykvant/Projects/dringo-back/dringo-admin/node_modules/prettier/parser-graphql.js:1:40445
    at Object.parse (/Users/dmitrykvant/Projects/dringo-back/dringo-admin/node_modules/prettier/parser-graphql.js:1:40469)
    at Object.parse$a [as parse] (/Users/dmitrykvant/Projects/dringo-back/dringo-admin/node_modules/prettier/index.js:13684:19)
    at coreFormat (/Users/dmitrykvant/Projects/dringo-back/dringo-admin/node_modules/prettier/index.js:15215:16)
    at formatWithCursor$1 (/Users/dmitrykvant/Projects/dringo-back/dringo-admin/node_modules/prettier/index.js:15455:14)
    at /Users/dmitrykvant/Projects/dringo-back/dringo-admin/node_modules/prettier/index.js:60228:12
    at Object.format (/Users/dmitrykvant/Projects/dringo-back/dringo-admin/node_modules/prettier/index.js:60248:12)
    at getCommittedArtifacts (/Users/dmitrykvant/Projects/dringo-back/dringo-admin/node_modules/@keystone-next/keystone/artifacts/dist/keystone.cjs.dev.js:442:23)
    at Object.generateCommittedArtifacts (/Users/dmitrykvant/Projects/dringo-back/dringo-admin/node_modules/@keystone-next/keystone/artifacts/dist/keystone.cjs.dev.js:508:27) {
  loc: { start: { line: 19, column: 16 } },
  codeFrame: '\u001b[0m \u001b[90m 17 |\u001b[39m   deleteUser(where\u001b[33m:\u001b[39m \u001b[33mUserWhereUniqueInput\u001b[39m\u001b[33m!\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mUser\u001b[39m\u001b[0m\n' +
    '\u001b[0m \u001b[90m 18 |\u001b[39m   deleteUsers(where\u001b[33m:\u001b[39m [\u001b[33mUserWhereUniqueInput\u001b[39m\u001b[33m!\u001b[39m]\u001b[33m!\u001b[39m)\u001b[33m:\u001b[39m [\u001b[33mUser\u001b[39m]\u001b[0m\n' +
    '\u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 19 |\u001b[39m   creates1_test\u001b[33m.\u001b[39mtransaction(data\u001b[33m:\u001b[39m s1_test\u001b[33m.\u001b[39mtransactionCreateInput\u001b[33m!\u001b[39m)\u001b[33m:\u001b[39m s1_test\u001b[33m.\u001b[39mtransaction\u001b[0m\n' +
    '\u001b[0m \u001b[90m    |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\u001b[0m\n' +
    '\u001b[0m \u001b[90m 20 |\u001b[39m   createS1Test\u001b[33m.\u001b[39mtransactions(data\u001b[33m:\u001b[39m [s1_test\u001b[33m.\u001b[39mtransactionCreateInput\u001b[33m!\u001b[39m]\u001b[33m!\u001b[39m)\u001b[33m:\u001b[39m [s1_test\u001b[33m.\u001b[39mtransaction]\u001b[0m\n' +
    '\u001b[0m \u001b[90m 21 |\u001b[39m   updates1_test\u001b[33m.\u001b[39mtransaction(where\u001b[33m:\u001b[39m s1_test\u001b[33m.\u001b[39mtransactionWhereUniqueInput\u001b[33m!\u001b[39m\u001b[33m,\u001b[39m data\u001b[33m:\u001b[39m s1_test\u001b[33m.\u001b[39mtransactionUpdateInput\u001b[33m!\u001b[39m)\u001b[33m:\u001b[39m s1_test\u001b[33m.\u001b[39mtransaction\u001b[0m\n' +
    '\u001b[0m \u001b[90m 22 |\u001b[39m   updateS1Test\u001b[33m.\u001b[39mtransactions(data\u001b[33m:\u001b[39m [s1_test\u001b[33m.\u001b[39mtransactionUpdateArgs\u001b[33m!\u001b[39m]\u001b[33m!\u001b[39m)\u001b[33m:\u001b[39m [s1_test\u001b[33m.\u001b[39mtransaction]\u001b[0m'
}
DmitryKvant commented 3 years ago

Solution is

export default withAuth(
  config({
    db: {
      adapter: 'prisma_postgresql',
      url: process.env.DATABASE_URL || 'postgres://stelace:password@127.0.0.1:6543/stelace-core?schema=s1_test',
    },
    ui: {
      isAccessAllowed: (context) => !!context.session?.data,
    },
    lists,
    session,
  })
);

using parameter schema in db url