From b348fae677870d397ff47b580cb1f8465d825dcf Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 29 Dec 2023 18:42:07 +0800 Subject: [PATCH] fix multi-select bulk action api --- packages/api/src/repository/index.ts | 25 ++++++++++++--------- packages/api/test/resolvers/article.test.ts | 16 ++++++++----- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/packages/api/src/repository/index.ts b/packages/api/src/repository/index.ts index 9d6ce825a..973e09434 100644 --- a/packages/api/src/repository/index.ts +++ b/packages/api/src/repository/index.ts @@ -58,17 +58,22 @@ export const queryBuilderToRawSql = (q: QueryBuilder): string => { if (Array.isArray(value)) { sql = sql.replace( `$${index + 1}`, - value - .map((element) => { - if (typeof element === 'string') { - return `'${element}'` - } + "'{" + + value + .map((element) => { + if (typeof element === 'string') { + return `"${element}"` + } - if (typeof element === 'number' || typeof element === 'boolean') { - return element.toString() - } - }) - .join(',') + if ( + typeof element === 'number' || + typeof element === 'boolean' + ) { + return element.toString() + } + }) + .join(',') + + "}'" ) } else if (value instanceof Date) { sql = sql.replace(`$${index + 1}`, `'${value.toISOString()}'`) diff --git a/packages/api/test/resolvers/article.test.ts b/packages/api/test/resolvers/article.test.ts index 3bc0bf443..b6e781597 100644 --- a/packages/api/test/resolvers/article.test.ts +++ b/packages/api/test/resolvers/article.test.ts @@ -2198,11 +2198,13 @@ describe('Article API', () => { } ) - context('when action is Delete', () => { + context('when action is Delete and query contains item id', () => { + let items: LibraryItem[] = [] + before(async () => { // Create some test items for (let i = 0; i < 5; i++) { - await createLibraryItem( + const item = await createLibraryItem( { user, itemType: i == 0 ? PageType.Article : PageType.File, @@ -2215,6 +2217,7 @@ describe('Article API', () => { }, user.id ) + items.push(item) } }) @@ -2224,17 +2227,18 @@ describe('Article API', () => { }) it('deletes all items', async () => { + const query = `includes:${items.map((i) => i.id).join(',')}` const res = await graphqlRequest( - bulkActionQuery(BulkActionType.Delete), + bulkActionQuery(BulkActionType.Delete, query), authToken ).expect(200) expect(res.body.data.bulkAction.success).to.be.true - const items = await graphqlRequest( - searchQuery('in:all'), + const response = await graphqlRequest( + searchQuery(query), authToken ).expect(200) - expect(items.body.data.search.pageInfo.totalCount).to.eql(0) + expect(response.body.data.search.pageInfo.totalCount).to.eql(0) }) }) })