frontend icon indicating copy to clipboard operation
frontend copied to clipboard

More strict projectModel.json validation on app generation

Open vadimbasko opened this issue 4 years ago • 0 comments

<?xml version="1.0"?>
<queries xmlns="http://schemas.haulmont.com/cuba/rest-queries.xsd">
    <query name="ordersAfterDate" entity="sales$Order" view="order-edit-view">
        <jpql><![CDATA[select o from sales$Order o where o.date >= :startDate and o.date <= :endDate]]></jpql>
        <params>
            <param name="startDate" type="java.util.Date"/>
            <param name="endDate" type="java.util.Date"/>
        </params>
    </query>
</queries>

(note: jpql query contains incorrect relation to Order class sales$Order but should be sales_Order, and view order-edit-view/order-edit)

  • export project model
  • try to generate react app with exported model from cli

AR: Obscure exception on app generation

Generating sdk:all to /p/t/ssf/src/cuba
Unhandled Rejection  Promise {
  <rejected> TypeError: Cannot read property 'replace' of undefined
      at escapeString (/home/vadim/.nvm/versions/node/v12.14.1/lib/node_modules/@cuba-platform/front-generator/node_modules/typescript/lib/typescript.js:12905:18)
      at escapeNonAsciiString (/home/vadim/.nvm/versions/node/v12.14.1/lib/node_modules/@cuba-platform/front-generator/node_modules/typescript/lib/typescript.js:12950:13)
      at Object.getLiteralText (/home/vadim/.nvm/versions/node/v12.14.1/lib/node_modules/@cuba-platform/front-generator/node_modules/typescript/lib/typescript.js:10288:34)
      at getLiteralTextOfNode (/home/vadim/.nvm/versions/node/v12.14.1/lib/node_modules/@cuba-platform/front-generator/node_modules/typescript/lib/typescript.js:93326:23)
      at emitLiteral (/home/vadim/.nvm/versions/node/v12.14.1/lib/node_modules/@cuba-platform/front-generator/node_modules/typescript/lib/typescript.js:91079:24)
      at pipelineEmitWithHint (/home/vadim/.nvm/versions/node/v12.14.1/lib/node_modules/@cuba-platform/front-generator/node_modules/typescript/lib/typescript.js:90890:32)
      at pipelineEmitWithComments (/home/vadim/.nvm/versions/node/v12.14.1/lib/node_modules/@cuba-platform/front-generator/node_modules/typescript/lib/typescript.js:93731:17)
      at pipelineEmit (/home/vadim/.nvm/versions/node/v12.14.1/lib/node_modules/@cuba-platform/front-generator/node_modules/typescript/lib/typescript.js:90537:13)
      at emitExpression (/home/vadim/.nvm/versions/node/v12.14.1/lib/node_modules/@cuba-platform/front-generator/node_modules/typescript/lib/typescript.js:90529:20)
      at emitNodeList (/home/vadim/.nvm/versions/node/v12.14.1/lib/node_modules/@cuba-platform/front-generator/node_modules/typescript/lib/typescript.js:93047:21)
}

The cause of exception is that projectModel.json contains restQueries with missing parameters entity and view.

  "restQueries": [
    {
      "name": "ordersAfterDate",
      "jpql": "select o from sales$Orderhttps://github.com/cuba-platform/sample-sales-cuba7 o where o.date >= :startDate and o.date <= :endDate",
      "params": [...]
    }]

ER: Error message should contains information about incorrect content in projectModel.json. Also may be it make sense to add validation in Studio on project model export (project model export should fail with error).

vadimbasko avatar Jul 31 '20 07:07 vadimbasko