mirror of
https://github.com/filecoin-project/slate.git
synced 2024-09-20 18:58:59 +03:00
create-or-update-stats
This commit is contained in:
parent
e7e8520eb0
commit
bb01d4afd6
74
node_common/data/methods/create-or-update-stats.js
Normal file
74
node_common/data/methods/create-or-update-stats.js
Normal file
@ -0,0 +1,74 @@
|
||||
import { runQuery } from "~/node_common/data/utilities";
|
||||
|
||||
export default async (date, data) => {
|
||||
return await runQuery({
|
||||
label: "CREATE_OR_UPDATE_STATS",
|
||||
queryFn: async (DB) => {
|
||||
const query = await DB.select("*").from("stats").where({ created_at: date }).first();
|
||||
|
||||
if (!query || query.error) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (query.id) {
|
||||
let updates = {...query.data};
|
||||
|
||||
if (data.deals) {
|
||||
updates.deals = updates.deals + data.deals;
|
||||
}
|
||||
|
||||
if (data.users) {
|
||||
updates.users = updates.users + data.users;
|
||||
}
|
||||
|
||||
if (data.slates) {
|
||||
updates.slates = updates.slates + data.slates;
|
||||
}
|
||||
|
||||
if (data.objects) {
|
||||
updates.objects = updates.objects + data.objects;
|
||||
}
|
||||
|
||||
if (data.subscribeUser) {
|
||||
updates.subscribeUsers = updates.subscribeUsers + data.subscribeUser;
|
||||
}
|
||||
|
||||
if (data.subscribeSlate) {
|
||||
updates.subscribeSlates = updates.subscribeSlates + data.subscribeSlate;
|
||||
}
|
||||
|
||||
const update = await DB.from("stats").where("id", query.id).update({ data: update }).returning("*");
|
||||
|
||||
if (!update || update.error) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const updateIndex = update ? update.pop() : null;
|
||||
return updateIndex;
|
||||
}
|
||||
|
||||
const insert = await DB.insert({ created_at: date, data: {
|
||||
deals: 0,
|
||||
users: 0,
|
||||
slates: 0,
|
||||
objects: 0,
|
||||
subscribeUsers: 0,
|
||||
subscribeSlates: 0,
|
||||
...data
|
||||
} }).into("stats").returning("*");
|
||||
const index = insert ? insert.pop() : null;
|
||||
|
||||
if (!index) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return JSON.parse(JSON.stringify(index));
|
||||
},
|
||||
errorFn: async (e) => {
|
||||
return {
|
||||
error: true,
|
||||
decorator: "CREATE_OR_UPDATE_STATS",
|
||||
};
|
||||
},
|
||||
});
|
||||
};
|
Loading…
Reference in New Issue
Block a user