diff --git a/gqschema/analytic.js b/gqschema/analytic.js new file mode 100644 index 00000000..e2449c78 --- /dev/null +++ b/gqschema/analytic.js @@ -0,0 +1,14 @@ +module.exports = ` + extend type Query { + events: customArray + } + extend type Mutation { + addLog( + IP: String! + customerId: ID + event: String! + from: String + data: customObject + ): statusSchema + } +`; diff --git a/models/Analytic.js b/models/Analytic.js new file mode 100644 index 00000000..5484d814 --- /dev/null +++ b/models/Analytic.js @@ -0,0 +1,36 @@ +const mongoose = require("mongoose") +const Schema = mongoose.Schema; + +const eventValues = [] +const fromValues = [] + +const AnalyticSchema = new Schema({ + IP: { + type: String, + required: true + }, + customerId: { + type: Schema.Types.ObjectId, + ref: "Customer" + }, + event: { + type: String, + enum: eventValues, + required: true + }, + from: { + type: String, + enum: fromValues + }, + data: {}, + date: { + type: Date, + default: Date.now() + } +}) + +module.exports = { + Analytic: mongoose.model('Analytics', AnalyticSchema), + eventValues, + fromValues, +} \ No newline at end of file diff --git a/resolvers/analytic.js b/resolvers/analytic.js new file mode 100644 index 00000000..c61bac40 --- /dev/null +++ b/resolvers/analytic.js @@ -0,0 +1,25 @@ +const { Analytic } = require("../models/Analytic"); + +const { MESSAGE_RESPONSE } = require("../config/helpers"); + +module.exports = { + Query: { + events: async (root, args) => { + const events = await Analytic.find().lean({}) + + return events + }, + }, + Mutation: { + addLog: async (root, args, { id }) => { + if (!id) { + return MESSAGE_RESPONSE("TOKEN_REQ", "Analytic", false); + } + + const { IP, customerId, event, from, data } = args; + const newLog = await Analytic.create(args) + + return MESSAGE_RESPONSE("AddSuccess", "Log", true); + }, + }, +};