wekan/models/counters.js

26 lines
795 B
JavaScript
Raw Normal View History

import { Meteor } from 'meteor/meteor';
Counters = new Mongo.Collection('counters');
// Async version (for future Meteor 3.0 migration)
async function incrementCounterAsync(counterName, amount = 1) {
const result = await Counters.rawCollection().findOneAndUpdate(
{ _id: counterName },
{ $inc: { next_val: amount } },
{ upsert: true, returnDocument: 'after' },
);
return result.value ? result.value.next_val : result.next_val;
}
// Sync version (for Meteor 2.x autoValue compatibility)
const incrementCounter = Meteor.wrapAsync(async (counterName, amount, callback) => {
try {
const result = await incrementCounterAsync(counterName, amount);
callback(null, result);
} catch (err) {
callback(err);
}
});
export { incrementCounter, incrementCounterAsync };