Simple User Quota (#367)

* Simple User Quota
* 👷Fix build with OpenSearch
This commit is contained in:
Anton Shepilov
2024-02-22 10:17:25 +01:00
committed by GitHub
parent df0809ec48
commit 63f2c281c0
34 changed files with 10549 additions and 5836 deletions
@@ -1,6 +1,10 @@
import SearchRepository from "../../../core/platform/services/search/repository";
import { getLogger, logger, TdriveLogger } from "../../../core/platform/framework";
import { CrudException, ListResult } from "../../../core/platform/framework/api/crud-service";
import {
CrudException,
ExecutionContext,
ListResult,
} from "../../../core/platform/framework/api/crud-service";
import Repository, {
comparisonType,
inType,
@@ -111,6 +115,14 @@ export class DocumentsService {
}
};
userQuota = async (context: CompanyExecutionContext): Promise<number> => {
const children = await this.repository.find({
parent_id: "user_" + context.user.id,
company_id: context.company.id,
});
return children.getEntities().reduce((sum, child) => sum + child.size, 0);
};
/**
* Fetches a drive element
*
@@ -1021,12 +1033,11 @@ export class DocumentsService {
}
getTab = async (tabId: string, context: CompanyExecutionContext): Promise<DriveTdriveTab> => {
const tab = await this.driveTdriveTabRepository.findOne(
return await this.driveTdriveTabRepository.findOne(
{ company_id: context.company.id, tab_id: tabId },
{},
context,
);
return tab;
};
setTab = async (
@@ -1,7 +1,7 @@
import { FastifyInstance, FastifyPluginCallback } from "fastify";
import { DocumentsController } from "./controllers";
import { createDocumentSchema, createVersionSchema } from "./schemas";
import profilerPlugin from "../../../utils/profiler";
// import profilerPlugin from "../../../utils/profiler";
const baseUrl = "/companies/:company_id";
const serviceUrl = `${baseUrl}/item`;
@@ -9,10 +9,10 @@ const serviceUrl = `${baseUrl}/item`;
const routes: FastifyPluginCallback = (fastify: FastifyInstance, _options, next) => {
const documentsController = new DocumentsController();
fastify.register(profilerPlugin, {
active: documentsController.profilingEnabled,
outputDir: "profiles",
});
// fastify.register(profilerPlugin, {
// active: documentsController.profilingEnabled,
// outputDir: "profiles",
// });
fastify.route({
method: "GET",