From de7c86a1e5fcb35f9da9746c471b16b1456af802 Mon Sep 17 00:00:00 2001 From: ChengLei Shao Date: Tue, 26 Nov 2024 16:39:21 +0800 Subject: [PATCH] fix: infer view field attribute (#5729) * fix: view collection with field attribute * fix: infer view with column field attribute --- .../core/database/src/__tests__/view/view-inference.test.ts | 1 + packages/core/database/src/view/view-inference.ts | 2 +- .../src/server/__tests__/view/view-collection.test.ts | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/core/database/src/__tests__/view/view-inference.test.ts b/packages/core/database/src/__tests__/view/view-inference.test.ts index 5636dd79f5..ffbf123bae 100644 --- a/packages/core/database/src/__tests__/view/view-inference.test.ts +++ b/packages/core/database/src/__tests__/view/view-inference.test.ts @@ -128,6 +128,7 @@ describe('view inference', function () { const createdAt = UserCollection.model.rawAttributes['createdAt'].field; expect(inferredFields[createdAt]['type']).toBe('date'); + expect(inferredFields[createdAt]['field']).toBeDefined(); if (db.options.dialect == 'sqlite') { expect(inferredFields['name']).toMatchObject({ diff --git a/packages/core/database/src/view/view-inference.ts b/packages/core/database/src/view/view-inference.ts index 992f8ccbaa..431a6958f7 100644 --- a/packages/core/database/src/view/view-inference.ts +++ b/packages/core/database/src/view/view-inference.ts @@ -52,7 +52,7 @@ export class ViewFieldInference { const rawFields = []; for (const [name, column] of Object.entries(columns)) { - const inferResult: any = { name, rawType: column.type }; + const inferResult: any = { name, rawType: column.type, field: name }; const usage = columnUsage[name]; diff --git a/packages/plugins/@nocobase/plugin-data-source-main/src/server/__tests__/view/view-collection.test.ts b/packages/plugins/@nocobase/plugin-data-source-main/src/server/__tests__/view/view-collection.test.ts index 35aa72468a..f7728fc08d 100644 --- a/packages/plugins/@nocobase/plugin-data-source-main/src/server/__tests__/view/view-collection.test.ts +++ b/packages/plugins/@nocobase/plugin-data-source-main/src/server/__tests__/view/view-collection.test.ts @@ -450,7 +450,7 @@ describe('view collection', function () { const dropViewSQL = `DROP VIEW IF EXISTS test_view`; await db.sequelize.query(dropViewSQL); - const viewSQL = `CREATE VIEW test_view AS select 1+1 as "Uppercase"`; + const viewSQL = `CREATE VIEW test_view AS select 1+1 as "t_Uppercase"`; await db.sequelize.query(viewSQL); await collectionRepository.create({ @@ -458,7 +458,7 @@ describe('view collection', function () { name: 'view_collection', viewName: 'test_view', isView: true, - fields: [{ type: 'string', name: 'upper_case', field: 'Uppercase' }], + fields: [{ type: 'string', name: 'upper_case', field: 't_Uppercase' }], schema: db.inDialect('postgres') ? 'public' : undefined, }, context: {}, @@ -466,7 +466,7 @@ describe('view collection', function () { const viewCollection = db.getCollection('view_collection'); - expect(viewCollection.model.rawAttributes['upper_case'].field).toEqual('Uppercase'); + expect(viewCollection.model.rawAttributes['upper_case'].field).toEqual('t_Uppercase'); const results = await viewCollection.repository.find(); expect(results.length).toBe(1); });