Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | 1x 1x 1x 1x 1x 1x 1x | const { Sequelize, Op } = require("sequelize");
const { models, sequelize } = require("../config/sequelize");
const { ApiError } = require("../utils/errorHandler");
const logger = require("../utils/logger");
exports.getUsers = async (userId) => {
const currentYear = new Date().getFullYear();
const users = await models.User.findAll({
attributes: [
[
Sequelize.fn(
"EXTRACT",
Sequelize.literal("MONTH FROM created_at::TIMESTAMP"),
),
"month",
],
[Sequelize.fn("COUNT", Sequelize.col("id")), "count"],
],
where: Sequelize.where(
Sequelize.fn(
"EXTRACT",
Sequelize.literal("YEAR FROM created_at::TIMESTAMP"),
),
currentYear,
),
group: [Sequelize.literal("month")],
raw: true,
});
// const users = await models.User.findAll({
// arrtibutes: {
// exclude: ['password'],
// include: [
// [Sequelize.fn('EXTRACT', Sequelize.literal('MONTH FROM created_at')), 'month'], // Extract month
// [Sequelize.fn('COUNT', Sequelize.col('id')), 'count'], // Extract month
// ],
// },
// where: {
// deleted_at: null, // Filter for non-deleted records
// [Op.and]: [
// Sequelize.where(
// Sequelize.fn('EXTRACT', Sequelize.literal('YEAR FROM created_at')),
// currentYear
// ), // Filter for current year
// ],
// },
// order: [
// [Sequelize.fn('EXTRACT', Sequelize.literal('MONTH FROM created_at')), 'ASC'], // Order by month
// ['created_at', 'ASC'], // Then by created_at
// ],
// raw: true,
// });
const addressVerificationData = await models.AddressVerification.findAll({
attributes: [
[
Sequelize.fn(
"EXTRACT",
Sequelize.literal("MONTH FROM sent_at::TIMESTAMP"),
),
"month",
],
[Sequelize.fn("COUNT", Sequelize.col("id")), "count"],
],
where: {
[Sequelize.Op.and]: [
Sequelize.where(
Sequelize.fn(
"EXTRACT",
Sequelize.literal("YEAR FROM sent_at::TIMESTAMP"),
),
currentYear,
),
{
sent_at: {
[Sequelize.Op.ne]: null,
},
},
],
},
group: [Sequelize.literal("month")],
raw: true,
});
// const addressVerificationData = await models.AddressVerification.findAll({
// arrtibutes: {
// include: [
// '*', // Select all columns
// [Sequelize.fn('EXTRACT', Sequelize.literal('MONTH FROM created_at')), 'month'], // Extract month
// ],
// },
// where: {
// deleted_at: null,
// sent_at: {
// [Sequelize.Op.ne]: null
// },
// [Op.and]:[Sequelize.where(
// Sequelize.fn('EXTRACT', Sequelize.literal('YEAR FROM created_at')),
// currentYear
// ), // Filter for current year
// ]},
// order: [
// [Sequelize.fn('EXTRACT', Sequelize.literal('MONTH FROM created_at')), 'ASC'], // Order by month
// ['created_at', 'ASC'], // Then by created_at
// ],
// raw: true,
// });
return { users, addressVerificationData };
};
exports.getCustomers = async () => {
const users = await models.User.findAll();
return { users };
};
exports.getVerifications = async () => {
const verificationsData = await models.AddressVerification.findAll();
return { verificationsData };
};
|