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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
feat: clear select on aggregates by jlenon7 · Pull Request #233 · AthennaIO/Database · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: clear select on aggregates by jlenon7 · Pull Request #233 · AthennaIO/Database · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: clear select on aggregates by jlenon7 · Pull Request #233 · AthennaIO/Database · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' feat: clear select on aggregates by jlenon7 · Pull Request #233 · AthennaIO/Database · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: clear select on aggregates by jlenon7 · Pull Request #233 · AthennaIO/Database · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: clear select on aggregates by jlenon7 · Pull Request #233 · AthennaIO/Database · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); feat: clear select on aggregates by jlenon7 · Pull Request #233 · AthennaIO/Database · GitHub
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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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