UNPKG

@topgroup/diginext

Version:

A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.

350 lines (349 loc) 17.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const dayjs_1 = __importDefault(require("dayjs")); const dist_1 = require("tsoa/dist"); const app_config_1 = require("../app.config"); const interfaces_1 = require("../interfaces"); const plugins_1 = require("../plugins"); const BaseController_1 = __importDefault(require("./BaseController")); let StatsController = class StatsController extends BaseController_1.default { /** * Current version */ version() { return (0, interfaces_1.respondSuccess)({ data: { version: (0, plugins_1.currentVersion)(), location: app_config_1.Config.LOCATION } }); } /** * General stats */ async summary() { const { DB } = await Promise.resolve().then(() => __importStar(require("../modules/api/DB"))); const filter = { workspace: this.workspace._id }; const [ // all projects, apps, clusters, databases, db_backups, gits, registries, frameworks, users, builds, releases, // today today_projects, today_apps, today_clusters, today_databases, today_db_backups, today_gits, today_registries, today_frameworks, today_users, today_builds, today_releases, // week week_projects, week_apps, week_clusters, week_databases, week_db_backups, week_gits, week_registries, week_frameworks, week_users, week_builds, week_releases, // month month_projects, month_apps, month_clusters, month_databases, month_db_backups, month_gits, month_registries, month_frameworks, month_users, month_builds, month_releases,] = await Promise.all([ // all DB.count("project", filter), DB.count("app", filter), DB.count("cluster", filter), DB.count("database", filter), DB.count("db_backup", filter), DB.count("git", filter), DB.count("registry", filter), DB.count("framework", filter), DB.count("user", { workspaces: this.workspace._id }), DB.count("build", filter), DB.count("release", filter), // today DB.count("project", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("date").toDate() } }), DB.count("app", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("date").toDate() } }), DB.count("cluster", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("date").toDate() } }), DB.count("database", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("date").toDate() } }), DB.count("db_backup", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("date").toDate() } }), DB.count("git", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("date").toDate() } }), DB.count("registry", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("date").toDate() } }), DB.count("framework", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("date").toDate() } }), DB.count("user", { workspaces: this.workspace._id, createdAt: { $gte: (0, dayjs_1.default)().startOf("date").toDate() } }), DB.count("build", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("date").toDate() } }), DB.count("release", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("date").toDate() } }), // week DB.count("project", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("week").toDate() } }), DB.count("app", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("week").toDate() } }), DB.count("cluster", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("week").toDate() } }), DB.count("database", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("week").toDate() } }), DB.count("db_backup", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("week").toDate() } }), DB.count("git", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("week").toDate() } }), DB.count("registry", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("week").toDate() } }), DB.count("framework", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("week").toDate() } }), DB.count("user", { workspaces: this.workspace._id, createdAt: { $gte: (0, dayjs_1.default)().startOf("week").toDate() } }), DB.count("build", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("week").toDate() } }), DB.count("release", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("week").toDate() } }), // month DB.count("project", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("month").toDate() } }), DB.count("app", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("month").toDate() } }), DB.count("cluster", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("month").toDate() } }), DB.count("database", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("month").toDate() } }), DB.count("db_backup", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("month").toDate() } }), DB.count("git", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("month").toDate() } }), DB.count("registry", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("month").toDate() } }), DB.count("framework", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("month").toDate() } }), DB.count("user", { workspaces: this.workspace._id, createdAt: { $gte: (0, dayjs_1.default)().startOf("month").toDate() } }), DB.count("build", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("month").toDate() } }), DB.count("release", { ...filter, createdAt: { $gte: (0, dayjs_1.default)().startOf("month").toDate() } }), ]); return (0, interfaces_1.respondSuccess)({ data: { all: { projects, apps, clusters, databases, db_backups, gits, registries, frameworks, users, builds, releases }, today: { projects: today_projects, apps: today_apps, clusters: today_clusters, databases: today_databases, db_backups: today_db_backups, gits: today_gits, registries: today_registries, frameworks: today_frameworks, users: today_users, builds: today_builds, releases: today_releases, }, week: { projects: week_projects, apps: week_apps, clusters: week_clusters, databases: week_databases, db_backups: week_db_backups, gits: week_gits, registries: week_registries, frameworks: week_frameworks, users: week_users, builds: week_builds, releases: week_releases, }, month: { projects: month_projects, apps: month_apps, clusters: month_clusters, databases: month_databases, db_backups: month_db_backups, gits: month_gits, registries: month_registries, frameworks: month_frameworks, users: month_users, builds: month_builds, releases: month_releases, }, }, }); } /** * Count projects */ async projects() { const { DB } = await Promise.resolve().then(() => __importStar(require("../modules/api/DB"))); const filter = { workspace: this.workspace._id }; const projects = await DB.count("project", filter); return (0, interfaces_1.respondSuccess)({ data: { total: projects } }); } /** * Count apps */ async apps() { const { DB } = await Promise.resolve().then(() => __importStar(require("../modules/api/DB"))); const filter = { workspace: this.workspace._id }; const apps = await DB.count("app", filter); return (0, interfaces_1.respondSuccess)({ data: { total: apps } }); } /** * Count clusters */ async clusters() { const { DB } = await Promise.resolve().then(() => __importStar(require("../modules/api/DB"))); const filter = { workspace: this.workspace._id }; const clusters = await DB.count("cluster", filter); return (0, interfaces_1.respondSuccess)({ data: { total: clusters } }); } /** * Count databases */ async databases() { const { DB } = await Promise.resolve().then(() => __importStar(require("../modules/api/DB"))); const filter = { workspace: this.workspace._id }; const databases = await DB.count("database", filter); return (0, interfaces_1.respondSuccess)({ data: { total: databases } }); } /** * Count git providers */ async gits() { const { DB } = await Promise.resolve().then(() => __importStar(require("../modules/api/DB"))); const filter = { workspace: this.workspace._id }; const gits = await DB.count("git", filter); return (0, interfaces_1.respondSuccess)({ data: { total: gits } }); } /** * Count registries */ async registries() { const { DB } = await Promise.resolve().then(() => __importStar(require("../modules/api/DB"))); const filter = { workspace: this.workspace._id }; const registries = await DB.count("registry", filter); return (0, interfaces_1.respondSuccess)({ data: { total: registries } }); } /** * Count frameworks */ async frameworks() { const { DB } = await Promise.resolve().then(() => __importStar(require("../modules/api/DB"))); const filter = { workspace: this.workspace._id }; const frameworks = await DB.count("framework", filter); return (0, interfaces_1.respondSuccess)({ data: { total: frameworks } }); } /** * Count users */ async users() { const { DB } = await Promise.resolve().then(() => __importStar(require("../modules/api/DB"))); const filter = { workspaces: this.workspace._id }; const users = await DB.count("user", filter); return (0, interfaces_1.respondSuccess)({ data: { total: users } }); } /** * Count builds */ async builds() { const { DB } = await Promise.resolve().then(() => __importStar(require("../modules/api/DB"))); const filter = { workspace: this.workspace._id }; const builds = await DB.count("build", filter); return (0, interfaces_1.respondSuccess)({ data: { total: builds } }); } /** * Count releases */ async releases() { const { DB } = await Promise.resolve().then(() => __importStar(require("../modules/api/DB"))); const filter = { workspace: this.workspace._id }; const releases = await DB.count("release", filter); return (0, interfaces_1.respondSuccess)({ data: { total: releases } }); } }; __decorate([ (0, dist_1.Get)("/version"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], StatsController.prototype, "version", null); __decorate([ (0, dist_1.Security)("api_key"), (0, dist_1.Security)("jwt"), (0, dist_1.Get)("/summary"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], StatsController.prototype, "summary", null); __decorate([ (0, dist_1.Security)("api_key"), (0, dist_1.Security)("jwt"), (0, dist_1.Get)("/projects"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], StatsController.prototype, "projects", null); __decorate([ (0, dist_1.Security)("api_key"), (0, dist_1.Security)("jwt"), (0, dist_1.Get)("/apps"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], StatsController.prototype, "apps", null); __decorate([ (0, dist_1.Security)("api_key"), (0, dist_1.Security)("jwt"), (0, dist_1.Get)("/clusters"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], StatsController.prototype, "clusters", null); __decorate([ (0, dist_1.Security)("api_key"), (0, dist_1.Security)("jwt"), (0, dist_1.Get)("/databases"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], StatsController.prototype, "databases", null); __decorate([ (0, dist_1.Security)("api_key"), (0, dist_1.Security)("jwt"), (0, dist_1.Get)("/gits"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], StatsController.prototype, "gits", null); __decorate([ (0, dist_1.Security)("api_key"), (0, dist_1.Security)("jwt"), (0, dist_1.Get)("/registries"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], StatsController.prototype, "registries", null); __decorate([ (0, dist_1.Security)("api_key"), (0, dist_1.Security)("jwt"), (0, dist_1.Get)("/frameworks"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], StatsController.prototype, "frameworks", null); __decorate([ (0, dist_1.Security)("api_key"), (0, dist_1.Security)("jwt"), (0, dist_1.Get)("/users"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], StatsController.prototype, "users", null); __decorate([ (0, dist_1.Security)("api_key"), (0, dist_1.Security)("jwt"), (0, dist_1.Get)("/builds"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], StatsController.prototype, "builds", null); __decorate([ (0, dist_1.Security)("api_key"), (0, dist_1.Security)("jwt"), (0, dist_1.Get)("/releases"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], StatsController.prototype, "releases", null); StatsController = __decorate([ (0, dist_1.Tags)("Stats"), (0, dist_1.Route)("stats") ], StatsController); exports.default = StatsController;