@@ -82,7 +82,7 @@ public function getQuotaUnitsInTimePeriod(int $type, int $periodStart): int {
8282 $ qb = $ this ->db ->getQueryBuilder ();
8383
8484 // Get the sum of the units used in the time period
85- $ qb ->select ($ qb ->createFunction ( ' SUM( units) ' ))
85+ $ qb ->select ($ qb ->func ()-> sum ( ' units ' ))
8686 ->from ($ this ->getTableName ())
8787 ->where (
8888 $ qb ->expr ()->eq ('type ' , $ qb ->createNamedParameter ($ type , IQueryBuilder::PARAM_INT ))
@@ -113,7 +113,7 @@ public function getQuotaUnitsOfUserInTimePeriod(string $userId, int $type, int $
113113 $ qb = $ this ->db ->getQueryBuilder ();
114114
115115 // Get the sum of the units used in the time period
116- $ qb ->select ($ qb ->createFunction ( ' SUM( units) ' ))
116+ $ qb ->select ($ qb ->func ()-> sum ( ' units ' ))
117117 ->from ($ this ->getTableName ())
118118 ->where (
119119 $ qb ->expr ()->eq ('type ' , $ qb ->createNamedParameter ($ type , IQueryBuilder::PARAM_INT ))
@@ -170,7 +170,7 @@ public function getQuotaUsagesOfUser(string $userId, int $type): array {
170170 public function getQuotaUnitsOfUser (string $ userId , int $ type ): int {
171171 $ qb = $ this ->db ->getQueryBuilder ();
172172
173- $ qb ->select ($ qb ->createFunction ( ' SUM( units) ' ))
173+ $ qb ->select ($ qb ->func ()-> sum ( ' units ' ))
174174 ->from ($ this ->getTableName ())
175175 ->where (
176176 $ qb ->expr ()->eq ('user_id ' , $ qb ->createNamedParameter ($ userId , IQueryBuilder::PARAM_STR ))
@@ -274,4 +274,51 @@ public function cleanupQuotaUsages(int $timePeriod): void {
274274 );
275275 $ qb ->executeStatement ();
276276 }
277+
278+ /**
279+ * Gets quota usage of all users
280+ * @param int $startTime
281+ * @param int $endTime
282+ * @return array
283+ * @throws Exception
284+ * @throws RuntimeException
285+ */
286+ public function getUsersQuotaUsage (int $ startTime , int $ endTime , $ type ): array {
287+ $ qb = $ this ->db ->getQueryBuilder ();
288+
289+ $ qb ->select ('user_id ' )
290+ ->selectAlias ($ qb ->func ()->sum ('units ' ), 'usage ' )
291+ ->from ($ this ->getTableName ())
292+ ->where ($ qb ->expr ()->gte ('timestamp ' , $ qb ->createNamedParameter ($ startTime , IQueryBuilder::PARAM_INT )))
293+ ->andWhere ($ qb ->expr ()->lte ('timestamp ' , $ qb ->createNamedParameter ($ endTime , IQueryBuilder::PARAM_INT )))
294+ ->andWhere ($ qb ->expr ()->eq ('type ' , $ qb ->createNamedParameter ($ type , IQueryBuilder::PARAM_INT )))
295+ ->groupBy ('user_id ' )
296+ ->orderBy ('usage ' , 'DESC ' );
297+
298+ return $ qb ->executeQuery ()->fetchAll ();
299+ }
300+ /**
301+ * Gets quota usage of all pools
302+ * @param int $startTime
303+ * @param int $endTime
304+ * @param int $type
305+ * @return array
306+ * @throws Exception
307+ * @throws RuntimeException
308+ */
309+ public function getPoolsQuotaUsage (int $ startTime , int $ endTime , int $ type ): array {
310+ $ qb = $ this ->db ->getQueryBuilder ();
311+
312+ $ qb ->select ('pool ' )
313+ ->selectAlias ($ qb ->func ()->sum ('units ' ), 'usage ' )
314+ ->from ($ this ->getTableName ())
315+ ->where ($ qb ->expr ()->neq ('pool ' , $ qb ->createNamedParameter (-1 , IQueryBuilder::PARAM_INT )))
316+ ->andWhere ($ qb ->expr ()->gte ('timestamp ' , $ qb ->createNamedParameter ($ startTime , IQueryBuilder::PARAM_INT )))
317+ ->andWhere ($ qb ->expr ()->lte ('timestamp ' , $ qb ->createNamedParameter ($ endTime , IQueryBuilder::PARAM_INT )))
318+ ->andWhere ($ qb ->expr ()->eq ('type ' , $ qb ->createNamedParameter ($ type , IQueryBuilder::PARAM_INT )))
319+ ->groupBy ('type ' , 'pool ' )
320+ ->orderBy ('usage ' , 'DESC ' );
321+
322+ return $ qb ->executeQuery ()->fetchAll ();
323+ }
277324}
0 commit comments