From f66a48abd088148231dd7ff332cb722c0c5de3f2 Mon Sep 17 00:00:00 2001 From: ChengLei Shao Date: Thu, 23 Jan 2025 10:45:54 +0800 Subject: [PATCH] fix: update table value without primary keys (#6124) * fix: update table value without primary keys * fix: test * fix: test --- .../src/__tests__/repository/update.test.ts | 34 +++++++++++++++++++ packages/core/database/src/repository.ts | 5 +++ 2 files changed, 39 insertions(+) diff --git a/packages/core/database/src/__tests__/repository/update.test.ts b/packages/core/database/src/__tests__/repository/update.test.ts index ee35b4c4c4..e9e03c59e6 100644 --- a/packages/core/database/src/__tests__/repository/update.test.ts +++ b/packages/core/database/src/__tests__/repository/update.test.ts @@ -87,6 +87,40 @@ describe('update', () => { await db.sync(); }); + it('should update collection that without primary key', async () => { + const collection = db.collection({ + name: 'without_pk', + autoGenId: false, + timestamps: false, + fields: [{ type: 'string', name: 'nameWithUnderscore' }], + }); + + await collection.sync(); + + await collection.repository.create({ + values: { + nameWithUnderscore: 'item1', + }, + }); + + await collection.repository.update({ + values: { + nameWithUnderscore: 'item2', + }, + filter: { + nameWithUnderscore: 'item1', + }, + }); + + const item = await collection.repository.findOne({ + filter: { + nameWithUnderscore: 'item2', + }, + }); + + expect(item).toBeDefined(); + }); + it('should throw error when update data conflicted', async () => { const t1 = await Tag.repository.create({ values: { diff --git a/packages/core/database/src/repository.ts b/packages/core/database/src/repository.ts index b6859be2c3..e3ba5c8b7f 100644 --- a/packages/core/database/src/repository.ts +++ b/packages/core/database/src/repository.ts @@ -22,6 +22,7 @@ import { FindOptions as SequelizeFindOptions, UpdateOptions as SequelizeUpdateOptions, Transactionable, + Utils, WhereOperators, } from 'sequelize'; @@ -420,6 +421,10 @@ export class Repository