Skip to content

Commit

Permalink
feat(plugin-mongodb): Move log-collection to community plugins.
Browse files Browse the repository at this point in the history
  • Loading branch information
Gervwyk committed Oct 4, 2023
1 parent de3807d commit d526a10
Show file tree
Hide file tree
Showing 14 changed files with 15 additions and 878 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,26 +18,13 @@ import getCollection from '../getCollection.js';
import { serialize, deserialize } from '../serialize.js';
import schema from './schema.js';

async function MongodbDeleteMany({ blockId, connection, pageId, request, requestId, payload }) {
async function MongodbDeleteMany({ connection, request }) {
const deserializedRequest = deserialize(request);
const { filter, options } = deserializedRequest;
const { collection, client, logCollection } = await getCollection({ connection });
const { collection, client } = await getCollection({ connection });
let response;
try {
response = await collection.deleteMany(filter, options);
if (logCollection) {
await logCollection.insertOne({
args: { filter, options },
blockId,
pageId,
payload,
requestId,
response,
timestamp: new Date(),
type: 'MongoDBDeleteMany',
meta: connection.changeLog?.meta,
});
}
} catch (error) {
await client.close();
throw error;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

import { validate } from '@lowdefy/ajv';
import MongoDBDeleteMany from './MongoDBDeleteMany.js';
import findLogCollectionRecordTestMongoDb from '../../../../test/findLogCollectionRecordTestMongoDb.js';
import populateTestMongoDb from '../../../../test/populateTestMongoDb.js';

const { checkRead, checkWrite } = MongoDBDeleteMany.meta;
Expand All @@ -25,7 +24,6 @@ const schema = MongoDBDeleteMany.schema;
const databaseUri = process.env.MONGO_URL;
const databaseName = 'test';
const collection = 'deleteMany';
const logCollection = 'logCollection';
const documents = [
{ _id: 'deleteMany' },
{ _id: 'deleteMany_1' },
Expand All @@ -34,13 +32,6 @@ const documents = [
{ _id: 'deleteMany_4', f: 'deleteMany' },
{ _id: 'deleteMany_5', f: 'deleteMany' },
{ _id: 'deleteMany_6', f: 'deleteMany' },
{ _id: 'deleteMany_log' },
{ _id: 'deleteMany_1_log' },
{ _id: 'deleteMany_2_log' },
{ _id: 'deleteMany_3_log' },
{ _id: 'deleteMany_4_log', f: 'deleteMany_log' },
{ _id: 'deleteMany_5_log', f: 'deleteMany_log' },
{ _id: 'deleteMany_6_log', f: 'deleteMany_log' },
];

beforeAll(() => {
Expand All @@ -64,43 +55,6 @@ test('deleteMany - Single Document', async () => {
});
});

test('deleteMany logCollection - Single Document', async () => {
const request = {
filter: { _id: 'deleteMany_log' },
};
const connection = {
databaseUri,
databaseName,
collection,
changeLog: { collection: logCollection, meta: { meta: true } },
write: true,
};
const res = await MongoDBDeleteMany({
request,
blockId: 'blockId',
pageId: 'pageId',
payload: { payload: true },
requestId: 'deleteMany_log',
connection,
});
expect(res).toEqual({
acknowledged: true,
deletedCount: 1,
});
const logged = await findLogCollectionRecordTestMongoDb({
logCollection,
requestId: 'deleteMany_log',
});
expect(logged).toMatchObject({
blockId: 'blockId',
pageId: 'pageId',
payload: { payload: true },
requestId: 'deleteMany_log',
type: 'MongoDBDeleteMany',
meta: { meta: true },
});
});

test('deleteMany - Multiple Documents', async () => {
const request = {
filter: { _id: { $in: ['deleteMany_1', 'deleteMany_2', 'deleteMany_3'] } },
Expand All @@ -118,43 +72,6 @@ test('deleteMany - Multiple Documents', async () => {
});
});

test('deleteMany logCollection - Multiple Documents', async () => {
const request = {
filter: { _id: { $in: ['deleteMany_1_log', 'deleteMany_2_log', 'deleteMany_3_log'] } },
};
const connection = {
databaseUri,
databaseName,
collection,
changeLog: { collection: logCollection, meta: { meta: true } },
write: true,
};
const res = await MongoDBDeleteMany({
request,
blockId: 'blockId',
pageId: 'pageId',
payload: { payload: true },
requestId: 'deleteMany_multiple',
connection,
});
expect(res).toEqual({
acknowledged: true,
deletedCount: 3,
});
const logged = await findLogCollectionRecordTestMongoDb({
logCollection,
requestId: 'deleteMany_multiple',
});
expect(logged).toMatchObject({
blockId: 'blockId',
pageId: 'pageId',
payload: { payload: true },
requestId: 'deleteMany_multiple',
type: 'MongoDBDeleteMany',
meta: { meta: true },
});
});

test('deleteMany - Multiple Documents one field', async () => {
const request = {
filter: { f: 'deleteMany' },
Expand All @@ -172,43 +89,6 @@ test('deleteMany - Multiple Documents one field', async () => {
});
});

test('deleteMany logCollection - Multiple Documents one field', async () => {
const request = {
filter: { f: 'deleteMany_log' },
};
const connection = {
databaseUri,
databaseName,
collection,
changeLog: { collection: logCollection, meta: { meta: true } },
write: true,
};
const res = await MongoDBDeleteMany({
request,
blockId: 'blockId',
pageId: 'pageId',
payload: { payload: true },
requestId: 'deleteMany_multiple_one_field',
connection,
});
expect(res).toEqual({
acknowledged: true,
deletedCount: 3,
});
const logged = await findLogCollectionRecordTestMongoDb({
logCollection,
requestId: 'deleteMany_multiple_one_field',
});
expect(logged).toMatchObject({
blockId: 'blockId',
pageId: 'pageId',
payload: { payload: true },
requestId: 'deleteMany_multiple_one_field',
type: 'MongoDBDeleteMany',
meta: { meta: true },
});
});

test('deleteMany connection error', async () => {
const request = {
filter: { _id: 'test' },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,29 +18,13 @@ import getCollection from '../getCollection.js';
import { serialize, deserialize } from '../serialize.js';
import schema from './schema.js';

async function MongodbDeleteOne({ blockId, connection, pageId, request, requestId, payload }) {
async function MongodbDeleteOne({ connection, request }) {
const deserializedRequest = deserialize(request);
const { filter, options } = deserializedRequest;
const { collection, client, logCollection } = await getCollection({ connection });
const { collection, client } = await getCollection({ connection });
let response;
try {
if (logCollection) {
const { value, ...responseWithoutValue } = await collection.findOneAndDelete(filter, options);
response = responseWithoutValue;
await logCollection.insertOne({
args: { filter, options },
blockId,
pageId,
payload,
requestId,
before: value,
timestamp: new Date(),
type: 'MongoDBDeleteOne',
meta: connection.changeLog?.meta,
});
} else {
response = await collection.deleteOne(filter, options);
}
response = await collection.deleteOne(filter, options);
} catch (error) {
await client.close();
throw error;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

import { validate } from '@lowdefy/ajv';
import MongoDBDeleteOne from './MongoDBDeleteOne.js';
import findLogCollectionRecordTestMongoDb from '../../../../test/findLogCollectionRecordTestMongoDb.js';
import populateTestMongoDb from '../../../../test/populateTestMongoDb.js';

const { checkRead, checkWrite } = MongoDBDeleteOne.meta;
Expand All @@ -25,7 +24,6 @@ const schema = MongoDBDeleteOne.schema;
const databaseUri = process.env.MONGO_URL;
const databaseName = 'test';
const collection = 'deleteOne';
const logCollection = 'logCollection';
const documents = [{ _id: 'deleteOne' }, { _id: 'deleteOne_log' }];

beforeAll(() => {
Expand All @@ -49,46 +47,6 @@ test('deleteOne', async () => {
});
});

test('deleteOne logCollection', async () => {
const request = {
filter: { _id: 'deleteOne_log' },
};
const connection = {
databaseUri,
databaseName,
collection,
changeLog: { collection: logCollection, meta: { meta: true } },
write: true,
};
const res = await MongoDBDeleteOne({
request,
blockId: 'blockId',
pageId: 'pageId',
payload: { payload: true },
requestId: 'deleteOne_log',
connection,
});
expect(res).toEqual({
lastErrorObject: {
n: 1,
},
ok: 1,
});
const logged = await findLogCollectionRecordTestMongoDb({
logCollection,
requestId: 'deleteOne_log',
});
expect(logged).toMatchObject({
blockId: 'blockId',
pageId: 'pageId',
payload: { payload: true },
requestId: 'deleteOne_log',
before: { _id: 'deleteOne_log' },
type: 'MongoDBDeleteOne',
meta: { meta: true },
});
});

test('deleteOne connection error', async () => {
const request = {
filter: { _id: 'test' },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,26 +18,13 @@ import getCollection from '../getCollection.js';
import { serialize, deserialize } from '../serialize.js';
import schema from './schema.js';

async function MongodbInsertMany({ blockId, connection, pageId, request, requestId, payload }) {
async function MongodbInsertMany({ connection, request }) {
const deserializedRequest = deserialize(request);
const { docs, options } = deserializedRequest;
const { collection, client, logCollection } = await getCollection({ connection });
const { collection, client } = await getCollection({ connection });
let response;
try {
response = await collection.insertMany(docs, options);
if (logCollection) {
await logCollection.insertOne({
args: { docs, options },
blockId,
pageId,
payload,
requestId,
response,
timestamp: new Date(),
type: 'MongoDBInsertMany',
meta: connection.changeLog?.meta,
});
}
} catch (error) {
await client.close();
throw error;
Expand Down

0 comments on commit d526a10

Please sign in to comment.