Sindbad~EG File Manager
"use strict";
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up(queryInterface, Sequelize) {
//user-side
//uAucUncatUnitCount
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS uAucUncatUnitCount;
`);
await queryInterface.sequelize.query(`
CREATE PROCEDURE uAucUncatUnitCount(IN user_id INT, IN week_id INT)
BEGIN
SELECT
0 as auction_id,
COALESCE(vr.lane_id, 'Not Provided') AS auction_name,
COUNT(vr.vehicle_run_id) AS units
FROM tblOpportunities AS o
LEFT JOIN tblVehicleRuns AS vr ON vr.opportunity_id = o.opportunity_id
WHERE o.user_id=user_id AND o.week_id=week_id AND vr.lane_id IS NULL
GROUP BY COALESCE(vr.lane_id, 'Not Provided');
END
`);
//uFilterByAuction
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS uFilterByAuction;
`);
await queryInterface.sequelize.query(`
CREATE PROCEDURE uFilterByAuction(IN user_id INT, IN week_id INT)
BEGIN
SELECT au.auction_id,
au.name as auction_name,
a.auctioneer_id,
IFNULL(COUNT(vr.lane_id), 0) AS units
FROM tblOpportunities AS o
JOIN tblAuctioneers AS a ON o.auctioneer_id = a.auctioneer_id
JOIN tblAuctionLanes AS al ON a.auctioneer_id = al.auctioneer_id
JOIN tblAuctions AS au ON al.auction_id = au.auction_id
LEFT JOIN tblVehicleRuns AS vr ON al.lane_id = vr.lane_id AND vr.opportunity_id = o.opportunity_id
WHERE o.user_id=user_id AND o.week_id=week_id
GROUP BY au.auction_id,a.auctioneer_id;
END
`);
//user-side
//uFilterByConditionLight
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS uFilterByConditionLight;
`);
await queryInterface.sequelize.query(`
CREATE PROCEDURE uFilterByConditionLight(IN user_id INT, IN week_id INT)
BEGIN
SELECT
vr.condition_light condition_light,
COUNT(vr.vehicle_run_id) AS units
FROM tblOpportunities AS o
JOIN tblAuctioneers AS a ON o.auctioneer_id = a.auctioneer_id
LEFT JOIN tblVehicleRuns AS vr ON o.opportunity_id = vr.opportunity_id
LEFT JOIN tblVehicles AS v ON vr.vehicle_id = v.vehicle_id
WHERE o.user_id=user_id AND o.week_id=week_id AND v.user_id=user_id
GROUP BY vr.condition_light;
END
`);
//user-side
//filterBySaleStatus
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS uFilterBySaleStatus;
`);
await queryInterface.sequelize.query(`
CREATE PROCEDURE uFilterBySaleStatus(IN user_id INT, IN week_id INT)
BEGIN
SELECT
CASE
WHEN vr.sale_status = 1 THEN 'true'
WHEN vr.sale_status = 0 THEN 'false'
ELSE 'unknown'
END AS sale_status,
COUNT(vr.vehicle_run_id) AS units
FROM
tblOpportunities AS o
JOIN tblAuctioneers AS a ON o.auctioneer_id = a.auctioneer_id
LEFT JOIN tblVehicleRuns AS vr ON o.opportunity_id = vr.opportunity_id
LEFT JOIN tblVehicles AS v ON vr.vehicle_id = v.vehicle_id
WHERE o.user_id = user_id AND o.week_id = week_id AND v.user_id = user_id AND vr.sale_status IS NOT NULL
GROUP BY vr.sale_status;
END
`);
//user-side
//UserStats
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS UserStats;
`);
await queryInterface.sequelize.query(`
CREATE PROCEDURE UserStats(IN user_id INT,IN start_date date,IN end_date date)
BEGIN
select v.user_id,
IFNULL(count(v.vehicle_id) ,0)as units,
IFNULL(sum(vr.sale_price),0) as total_sales,
IFNULL(sum(vr.net_proceeds),0) as net_proceeds
from tblVehicles as v
inner join tblUsers as u on u.user_id=v.user_id
inner join tblVehicleRuns as vr on vr.vehicle_id=v.vehicle_id
where v.user_id=user_id AND Date(vr.createdAt) BETWEEN start_date AND end_date AND vr.sale_status=true
group by v.user_id;
END
`);
//auctioneer-side
//aFilterByAuction
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS aAucUncatUnitCount;
`);
await queryInterface.sequelize.query(`
CREATE PROCEDURE aAucUncatUnitCount(IN auctioneer_id INT, IN week_id INT)
BEGIN
SELECT
0 as auction_id,
COALESCE(vr.lane_id, 'Not Provided') AS auction_name,
COUNT(vr.vehicle_run_id) AS units
FROM
tblOpportunities AS o
LEFT JOIN
tblVehicleRuns AS vr ON vr.opportunity_id = o.opportunity_id
WHERE
o.auctioneer_id = auctioneer_id AND o.week_id = week_id AND vr.lane_id IS NULL
GROUP BY
COALESCE(vr.lane_id, 'Not Provided');
END
`);
//aFilterByAuction
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS aFilterByAuction;
`);
await queryInterface.sequelize.query(`
CREATE PROCEDURE aFilterByAuction(IN auctioneer_id INT, IN week_id INT)
BEGIN
SELECT
au.auction_id,
au.name as auction_name,
COUNT(vr.vehicle_run_id) AS units
FROM tblOpportunities AS o
JOIN tblAuctioneers AS a ON o.auctioneer_id = a.auctioneer_id
JOIN tblAuctionLanes AS al ON a.auctioneer_id = al.auctioneer_id
JOIN tblAuctions AS au ON al.auction_id = au.auction_id
LEFT JOIN tblVehicleRuns AS vr ON al.lane_id = vr.lane_id AND vr.opportunity_id = o.opportunity_id
WHERE o.auctioneer_id=auctioneer_id AND o.week_id=week_id
GROUP BY au.auction_id;
END
`);
//auctioneer-side
//aFilterByConditionLight
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS aFilterByConditionLight;
`);
await queryInterface.sequelize.query(`
CREATE PROCEDURE aFilterByConditionLight(IN auctioneer_id INT, IN week_id INT)
BEGIN
SELECT
vr.condition_light AS condition_light,
COUNT(vr.vehicle_run_id) AS units
FROM tblOpportunities AS o
JOIN tblAuctioneers AS a ON o.auctioneer_id = a.auctioneer_id
LEFT JOIN tblVehicleRuns AS vr ON o.opportunity_id = vr.opportunity_id
WHERE o.auctioneer_id = auctioneer_id AND o.week_id = week_id
GROUP BY vr.condition_light
ORDER BY condition_light DESC;
END
`);
//auctioneer-side
//aFilterBySaleStatus
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS aFilterBySaleStatus;
`);
await queryInterface.sequelize.query(`
CREATE PROCEDURE aFilterBySaleStatus(IN auctioneer_id INT, IN week_id INT)
BEGIN
SELECT
CASE
WHEN vr.sale_status = 1 THEN 'true'
WHEN vr.sale_status = 0 THEN 'false'
ELSE 'unknown'
END AS sale_status,
COUNT(vr.vehicle_run_id) AS units
FROM tblOpportunities AS o
JOIN tblAuctioneers AS a ON o.auctioneer_id = a.auctioneer_id
LEFT JOIN tblVehicleRuns AS vr ON o.opportunity_id = vr.opportunity_id
WHERE o.auctioneer_id = auctioneer_id AND o.week_id = week_id AND vr.sale_status IS NOT NULL
GROUP BY vr.sale_status;
END
`);
//Auctioneer-side
//AuctioneerStats
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS AuctioneerStats;
`);
await queryInterface.sequelize.query(`
CREATE PROCEDURE AuctioneerStats( IN auctioneer_id INT,
IN start_date DATE,
IN end_date DATE)
BEGIN
SELECT
COUNT(vr.sale_status) AS sold_units,
SUM(vr.sale_price) AS total_sales,
SUM(vr.net_proceeds) AS net_proceeds
FROM tblOpportunities AS o
INNER JOIN tblAuctioneers AS a ON a.auctioneer_id = o.auctioneer_id
INNER JOIN tblVehicleRuns AS vr ON vr.opportunity_id = o.opportunity_id
WHERE o.auctioneer_id = auctioneer_id
AND DATE(vr.createdAt) BETWEEN start_date AND end_date
AND vr.sale_status = TRUE
GROUP BY vr.sale_status;
END
`);
},
async down(queryInterface, Sequelize) {
//UserSide
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS uAucUncatUnitCount;
`);
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS uFilterByAuction;
`);
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS uFilterByConditionLight;
`);
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS uFilterBySaleStatus;
`);
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS UserStats;
`);
//AuctioneerSide
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS aAucUncatUnitCount;
`);
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS aFilterByAuction;
`);
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS aFilterByConditionLight;
`);
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS aFilterBySaleStatus;
`);
await queryInterface.sequelize.query(`
DROP PROCEDURE IF EXISTS AuctioneerStats;
`);
},
};
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists