aurora icon indicating copy to clipboard operation
aurora copied to clipboard

Comments Break Parsing Logic

Open ddhorstman opened this issue 3 years ago • 2 comments

Describe the bug It would seem that the presence of comments in my files is confusing aurora. In my org, we like to use comments as dividers to make our files easier to navigate, like so:

//--------------------------------------------------------------------------------------------------//

But the presence of a single //- sequence causes aurora to crash.

To Reproduce

  1. Install aurora.
  2. Pick the Author and Book schemas from README.md, and set up aurora.config.json` to combine them.
  3. Add //- anywhere in either file.
  4. Run aurora

Expected behavior The two schemas are combined into a single schema

Actual Behavior The following error is printed:

    / \     _   _   _ __    ___    _ __    __ _ 
   / _ \   | | | | | '__|  / _ \  | '__|  / _` |
  / ___ \  | |_| | | |    | (_) | | |    | (_| |
 /_/   \_\  \__,_| |_|     \___/  |_|     \__,_|
                                                
TypeError: Cannot read properties of undefined (reading 'filter')
    at /home/davidhorstman/GitHub/clipboard-staffing-api/node_modules/prisma-aurora/lib/helpers/parseSchema.js:103:84
    at Array.map (<anonymous>)
    at /home/davidhorstman/GitHub/clipboard-staffing-api/node_modules/prisma-aurora/lib/helpers/parseSchema.js:102:59
    at step (/home/davidhorstman/GitHub/clipboard-staffing-api/node_modules/prisma-aurora/lib/helpers/parseSchema.js:44:23)
    at Object.next (/home/davidhorstman/GitHub/clipboard-staffing-api/node_modules/prisma-aurora/lib/helpers/parseSchema.js:25:53)
    at fulfilled (/home/davidhorstman/GitHub/clipboard-staffing-api/node_modules/prisma-aurora/lib/helpers/parseSchema.js:16:58) Aurora could not parse the schema at ./src/modules/workers/worker-model.prisma. Please ensure it is of a proper format.
/home/davidhorstman/GitHub/clipboard-staffing-api/node_modules/prisma-aurora/lib/helpers/parseSchema.js:103
                                model.extendedFields = attributeData_1[model.name].filter(function (attribute) { return attribute.isFieldAttribute; });
                                                                                   ^

TypeError: Cannot read properties of undefined (reading 'filter')
    at /home/davidhorstman/GitHub/clipboard-staffing-api/node_modules/prisma-aurora/lib/helpers/parseSchema.js:103:84
    at Array.map (<anonymous>)
    at /home/davidhorstman/GitHub/clipboard-staffing-api/node_modules/prisma-aurora/lib/helpers/parseSchema.js:102:59
    at step (/home/davidhorstman/GitHub/clipboard-staffing-api/node_modules/prisma-aurora/lib/helpers/parseSchema.js:44:23)
    at Object.next (/home/davidhorstman/GitHub/clipboard-staffing-api/node_modules/prisma-aurora/lib/helpers/parseSchema.js:25:53)
    at fulfilled (/home/davidhorstman/GitHub/clipboard-staffing-api/node_modules/prisma-aurora/lib/helpers/parseSchema.js:16:58)

Desktop (please complete the following information):

  • OS: Windows 10, WSL2 (Ubuntu 20.04)

Screenshots image

ddhorstman avatar Feb 18 '22 18:02 ddhorstman

I can't seem to recreate this issue. Can you paste in the schema you are using?

sabinadams avatar Mar 05 '22 02:03 sabinadams

I'm encountering that same issue. It occurs every time I'm using comments before defining a model:

  • Works:

    model ModelA {
      // Comment
      id Int @id
    }
    
  • Fails:

    // Comment
    model ModelA {
      id Int @id
    }
    

Both using Aurora 1.3.3 running with node v16.13.0 on linux, with the following config:

{
  "files": [
    "./modelA.prisma"
  ],
  "output": "./schema.prisma"
}
Error Output
TypeError: Cannot read properties of undefined (reading 'filter')
    at /tmp/xfs-9f75d524/dlx-74100/node_modules/prisma-aurora/lib/helpers/parseSchema.js:103:84
    at Array.map (<anonymous>)
    at /tmp/xfs-9f75d524/dlx-74100/node_modules/prisma-aurora/lib/helpers/parseSchema.js:102:59
    at step (/tmp/xfs-9f75d524/dlx-74100/node_modules/prisma-aurora/lib/helpers/parseSchema.js:44:23)
    at Object.next (/tmp/xfs-9f75d524/dlx-74100/node_modules/prisma-aurora/lib/helpers/parseSchema.js:25:53)
    at fulfilled (/tmp/xfs-9f75d524/dlx-74100/node_modules/prisma-aurora/lib/helpers/parseSchema.js:16:58) Aurora could not parse the schema at ./modelA.prisma. Please ensure it is of a proper format.
/tmp/xfs-9f75d524/dlx-74100/node_modules/prisma-aurora/lib/helpers/parseSchema.js:103
                                model.extendedFields = attributeData_1[model.name].filter(function (attribute) { return attribute.isFieldAttribute; });
                                                                                   ^

TypeError: Cannot read properties of undefined (reading 'filter')
    at /tmp/xfs-9f75d524/dlx-74100/node_modules/prisma-aurora/lib/helpers/parseSchema.js:103:84
    at Array.map (<anonymous>)
    at /tmp/xfs-9f75d524/dlx-74100/node_modules/prisma-aurora/lib/helpers/parseSchema.js:102:59
    at step (/tmp/xfs-9f75d524/dlx-74100/node_modules/prisma-aurora/lib/helpers/parseSchema.js:44:23)
    at Object.next (/tmp/xfs-9f75d524/dlx-74100/node_modules/prisma-aurora/lib/helpers/parseSchema.js:25:53)
    at fulfilled (/tmp/xfs-9f75d524/dlx-74100/node_modules/prisma-aurora/lib/helpers/parseSchema.js:16:58)

Comments before datasource, generator and enum definitions work fine:

// Comment
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

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

// Comment
enum TestEnum {
  TEST
}

cmd-johnson avatar Mar 10 '22 13:03 cmd-johnson