Use explicit return type for getFilterQuery

This commit is contained in:
Alex Gleason 2023-08-09 01:53:50 -05:00
parent 55c957d10b
commit ad112ff9a6
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
3 changed files with 7 additions and 6 deletions

View File

@ -3,7 +3,7 @@ import path from 'node:path';
import { DenoSqliteDialect, FileMigrationProvider, Kysely, Migrator, Sqlite } from '@/deps.ts';
interface Tables {
interface DittoDB {
events: EventRow;
tags: TagRow;
users: UserRow;
@ -33,7 +33,7 @@ interface UserRow {
inserted_at: Date;
}
const db = new Kysely<Tables>({
const db = new Kysely<DittoDB>({
dialect: new DenoSqliteDialect({
database: new Sqlite('data/db.sqlite3'),
}),
@ -52,4 +52,4 @@ console.log('Running migrations...');
const results = await migrator.migrateToLatest();
console.log('Migrations finished:', results);
export { db, type EventRow, type TagRow, type UserRow };
export { db, type DittoDB, type EventRow, type TagRow, type UserRow };

View File

@ -1,7 +1,7 @@
import { type Filter, type Insertable } from '@/deps.ts';
import { type Filter, type Insertable, type SelectQueryBuilder } from '@/deps.ts';
import { type SignedEvent } from '@/event.ts';
import { db, type TagRow } from '@/db.ts';
import { db, type DittoDB, type EventRow, type TagRow } from '@/db.ts';
function insertEvent(event: SignedEvent): Promise<void> {
return db.transaction().execute(async (trx) => {
@ -34,7 +34,7 @@ function insertEvent(event: SignedEvent): Promise<void> {
});
}
function getFilterQuery<K extends number = number>(filter: Filter<K>) {
function getFilterQuery(filter: Filter): SelectQueryBuilder<DittoDB, 'events', EventRow> {
let query = db.selectFrom('events').selectAll().orderBy('created_at', 'desc');
for (const key of Object.keys(filter)) {

View File

@ -56,6 +56,7 @@ export {
Kysely,
Migrator,
type NullableInsertKeys,
type SelectQueryBuilder,
sql,
} from 'npm:kysely@^0.25.0';
export { DenoSqliteDialect } from 'https://gitlab.com/soapbox-pub/kysely-deno-sqlite/-/raw/76748303a45fac64a889cd2b9265c6c9b8ef2e8b/mod.ts';