Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@athenna/database",
"version": "5.51.0",
"version": "5.52.0",
"description": "The Athenna database handler for SQL/NoSQL.",
"license": "MIT",
"author": "João Lenon <lenon@athenna.io>",
Expand Down
12 changes: 6 additions & 6 deletions src/database/builders/QueryBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,42 +94,42 @@ export class QueryBuilder<
/**
* Calculate the average of a given column.
*/
public async avg(column: string | ModelColumns<T>): Promise<string> {
public async avg(column: string | ModelColumns<T>): Promise<number> {
return this.driver.avg(column as string)
}

/**
* Calculate the average of a given column.
*/
public async avgDistinct(column: string | ModelColumns<T>): Promise<string> {
public async avgDistinct(column: string | ModelColumns<T>): Promise<number> {
return this.driver.avgDistinct(column as string)
}

/**
* Get the max number of a given column.
*/
public async max(column: string | ModelColumns<T>): Promise<string> {
public async max(column: string | ModelColumns<T>): Promise<number> {
return this.driver.max(column as string)
}

/**
* Get the min number of a given column.
*/
public async min(column: string | ModelColumns<T>): Promise<string> {
public async min(column: string | ModelColumns<T>): Promise<number> {
return this.driver.min(column as string)
}

/**
* Sum all numbers of a given column.
*/
public async sum(column: string | ModelColumns<T>): Promise<string> {
public async sum(column: string | ModelColumns<T>): Promise<number> {
return this.driver.sum(column as string)
}

/**
* Sum all numbers of a given column.
*/
public async sumDistinct(column: string | ModelColumns<T>): Promise<string> {
public async sumDistinct(column: string | ModelColumns<T>): Promise<number> {
return this.driver.sumDistinct(column as string)
}

Expand Down
40 changes: 20 additions & 20 deletions src/database/drivers/BaseKnexDriver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -302,55 +302,55 @@ export class BaseKnexDriver extends Driver<Knex, Knex.QueryBuilder> {
/**
* Calculate the average of a given column.
*/
public async avg(column: string): Promise<string> {
const [{ avg }] = await this.qb.avg({ avg: column })
public async avg(column: string): Promise<number> {
const [{ avg }] = await this.qb.clearSelect().avg({ avg: column })

return avg
return avg == null ? null : Number(avg)
}

/**
* Calculate the average of a given column using distinct.
*/
public async avgDistinct(column: string): Promise<string> {
const [{ avg }] = await this.qb.avgDistinct({ avg: column })
public async avgDistinct(column: string): Promise<number> {
const [{ avg }] = await this.qb.clearSelect().avgDistinct({ avg: column })

return avg
return avg == null ? null : Number(avg)
}

/**
* Get the max number of a given column.
*/
public async max(column: string): Promise<string> {
const [{ max }] = await this.qb.max({ max: column })
public async max(column: string): Promise<number> {
const [{ max }] = await this.qb.clearSelect().max({ max: column })

return max
return max == null ? null : Number(max)
}

/**
* Get the min number of a given column.
*/
public async min(column: string): Promise<string> {
const [{ min }] = await this.qb.min({ min: column })
public async min(column: string): Promise<number> {
const [{ min }] = await this.qb.clearSelect().min({ min: column })

return min
return min == null ? null : Number(min)
}

/**
* Sum all numbers of a given column.
*/
public async sum(column: string): Promise<string> {
const [{ sum }] = await this.qb.sum({ sum: column })
public async sum(column: string): Promise<number> {
const [{ sum }] = await this.qb.clearSelect().sum({ sum: column })

return sum
return sum == null ? null : Number(sum)
}

/**
* Sum all numbers of a given column in distinct mode.
*/
public async sumDistinct(column: string): Promise<string> {
const [{ sum }] = await this.qb.sumDistinct({ sum: column })
public async sumDistinct(column: string): Promise<number> {
const [{ sum }] = await this.qb.clearSelect().sumDistinct({ sum: column })

return sum
return sum == null ? null : Number(sum)
}

/**
Expand All @@ -371,7 +371,7 @@ export class BaseKnexDriver extends Driver<Knex, Knex.QueryBuilder> {
* Calculate the average of a given column using distinct.
*/
public async count(column: string = '*'): Promise<number> {
const [{ count }] = await this.qb.count({ count: column })
const [{ count }] = await this.qb.clearSelect().count({ count: column })

return Number(count)
}
Expand All @@ -380,7 +380,7 @@ export class BaseKnexDriver extends Driver<Knex, Knex.QueryBuilder> {
* Calculate the average of a given column using distinct.
*/
public async countDistinct(column: string): Promise<number> {
const [{ count }] = await this.qb.countDistinct({ count: column })
const [{ count }] = await this.qb.clearSelect().countDistinct({ count: column })

return Number(count)
}
Expand Down
12 changes: 6 additions & 6 deletions src/database/drivers/Driver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -365,32 +365,32 @@ export abstract class Driver<Client = any, QB = any> {
/**
* Calculate the average of a given column.
*/
public abstract avg(column: string): Promise<string>
public abstract avg(column: string): Promise<number>

/**
* Calculate the average of a given column using distinct.
*/
public abstract avgDistinct(column: string): Promise<string>
public abstract avgDistinct(column: string): Promise<number>

/**
* Get the max number of a given column.
*/
public abstract max(column: string): Promise<string>
public abstract max(column: string): Promise<number>

/**
* Get the min number of a given column.
*/
public abstract min(column: string): Promise<string>
public abstract min(column: string): Promise<number>

/**
* Sum all numbers of a given column.
*/
public abstract sum(column: string): Promise<string>
public abstract sum(column: string): Promise<number>

/**
* Sum all numbers of a given column in distinct mode.
*/
public abstract sumDistinct(column: string): Promise<string>
public abstract sumDistinct(column: string): Promise<number>

/**
* Increment a value of a given column.
Expand Down
24 changes: 12 additions & 12 deletions src/database/drivers/FakeDriver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -265,43 +265,43 @@ export class FakeDriver {
/**
* Calculate the average of a given column.
*/
public static async avg() {
return '1'
public static async avg(): Promise<number> {
return 1
}

/**
* Calculate the average of a given column using distinct.
*/
public static async avgDistinct() {
return '1'
public static async avgDistinct(): Promise<number> {
return 1
}

/**
* Get the max number of a given column.
*/
public static async max() {
return '1'
public static async max(): Promise<number> {
return 1
}

/**
* Get the min number of a given column.
*/
public static async min(): Promise<string> {
return '1'
public static async min(): Promise<number> {
return 1
}

/**
* Sum all numbers of a given column.
*/
public static async sum(): Promise<string> {
return '1'
public static async sum(): Promise<number> {
return 1
}

/**
* Sum all numbers of a given column in distinct mode.
*/
public static async sumDistinct(): Promise<string> {
return '1'
public static async sumDistinct(): Promise<number> {
return 1
}

/**
Expand Down
24 changes: 12 additions & 12 deletions src/database/drivers/MongoDriver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ export class MongoDriver extends Driver<Connection, Collection> {
/**
* Calculate the average of a given column.
*/
public async avg(column: string): Promise<string> {
public async avg(column: string): Promise<number> {
await this.client.asPromise()

const pipeline = this.createPipeline()
Expand All @@ -395,13 +395,13 @@ export class MongoDriver extends Driver<Connection, Collection> {
return null
}

return `${result[0].avg}`
return Number(result[0].avg)
}

/**
* Calculate the average of a given column using distinct.
*/
public async avgDistinct(column: string): Promise<string> {
public async avgDistinct(column: string): Promise<number> {
await this.client.asPromise()

const pipeline = this.createPipeline()
Expand All @@ -419,13 +419,13 @@ export class MongoDriver extends Driver<Connection, Collection> {
return null
}

return `${result[0].avg}`
return Number(result[0].avg)
}

/**
* Get the max number of a given column.
*/
public async max(column: string): Promise<string> {
public async max(column: string): Promise<number> {
await this.client.asPromise()

const pipeline = this.createPipeline()
Expand All @@ -443,13 +443,13 @@ export class MongoDriver extends Driver<Connection, Collection> {
return null
}

return `${result[0].max}`
return Number(result[0].max)
}

/**
* Get the min number of a given column.
*/
public async min(column: string): Promise<string> {
public async min(column: string): Promise<number> {
await this.client.asPromise()

const pipeline = this.createPipeline()
Expand All @@ -467,13 +467,13 @@ export class MongoDriver extends Driver<Connection, Collection> {
return null
}

return `${result[0].min}`
return Number(result[0].min)
}

/**
* Sum all numbers of a given column.
*/
public async sum(column: string): Promise<string> {
public async sum(column: string): Promise<number> {
await this.client.asPromise()

const pipeline = this.createPipeline()
Expand All @@ -491,13 +491,13 @@ export class MongoDriver extends Driver<Connection, Collection> {
return null
}

return `${result[0].sum}`
return Number(result[0].sum)
}

/**
* Sum all numbers of a given column in distinct mode.
*/
public async sumDistinct(column: string): Promise<string> {
public async sumDistinct(column: string): Promise<number> {
await this.client.asPromise()

const pipeline = this.createPipeline()
Expand All @@ -515,7 +515,7 @@ export class MongoDriver extends Driver<Connection, Collection> {
return null
}

return `${result[0].sum}`
return Number(result[0].sum)
}

/**
Expand Down
Loading
Loading