Update CRUD functions type defs

This commit is contained in:
Benjamin Toby 2026-03-02 17:03:00 +01:00
parent 83bc501bd1
commit 077a15ed71
12 changed files with 82 additions and 52 deletions

View File

@ -1,16 +1,16 @@
import type { APIResponseObject, ServerQueryParam } from "../../types";
type Params<T extends {
type Params<Schema extends {
[k: string]: any;
} = {
[k: string]: any;
}> = {
table: string;
query?: ServerQueryParam<T>;
}, Table extends string = string> = {
table: Table;
query?: ServerQueryParam<Schema>;
targetId?: number | string;
};
export default function DbDelete<T extends {
export default function DbDelete<Schema extends {
[k: string]: any;
} = {
[k: string]: any;
}>({ table, query, targetId }: Params<T>): Promise<APIResponseObject>;
}, Table extends string = string>({ table, query, targetId, }: Params<Schema, Table>): Promise<APIResponseObject>;
export {};

View File

@ -1,7 +1,7 @@
import DbClient from ".";
import _ from "lodash";
import sqlGenerator from "../../utils/sql-generator";
export default async function DbDelete({ table, query, targetId }) {
export default async function DbDelete({ table, query, targetId, }) {
try {
let finalQuery = query || {};
if (targetId) {

View File

@ -1,15 +1,15 @@
import type { APIResponseObject } from "../../types";
type Params<T extends {
type Params<Schema extends {
[k: string]: any;
} = {
[k: string]: any;
}> = {
table: string;
data: T[];
}, Table extends string = string> = {
table: Table;
data: Schema[];
};
export default function DbInsert<T extends {
export default function DbInsert<Schema extends {
[k: string]: any;
} = {
[k: string]: any;
}>({ table, data }: Params<T>): Promise<APIResponseObject>;
}, Table extends string = string>({ table, data }: Params<Schema, Table>): Promise<APIResponseObject>;
export {};

View File

@ -1,17 +1,17 @@
import type { APIResponseObject, ServerQueryParam } from "../../types";
type Params<T extends {
type Params<Schema extends {
[k: string]: any;
} = {
[k: string]: any;
}> = {
query?: ServerQueryParam<T>;
table: string;
}, Table extends string = string> = {
query?: ServerQueryParam<Schema>;
table: Table;
count?: boolean;
targetId?: number | string;
};
export default function DbSelect<T extends {
export default function DbSelect<Schema extends {
[k: string]: any;
} = {
[k: string]: any;
}>({ table, query, count, targetId }: Params<T>): Promise<APIResponseObject<T>>;
}, Table extends string = string>({ table, query, count, targetId, }: Params<Schema, Table>): Promise<APIResponseObject<Schema>>;
export {};

View File

@ -2,7 +2,7 @@ import mysql from "mysql";
import DbClient from ".";
import _ from "lodash";
import sqlGenerator from "../../utils/sql-generator";
export default async function DbSelect({ table, query, count, targetId }) {
export default async function DbSelect({ table, query, count, targetId, }) {
try {
let finalQuery = query || {};
if (targetId) {

View File

@ -1,17 +1,17 @@
import type { APIResponseObject, ServerQueryParam } from "../../types";
type Params<T extends {
type Params<Schema extends {
[k: string]: any;
} = {
[k: string]: any;
}> = {
table: string;
data: T;
query?: ServerQueryParam<T>;
}, Table extends string = string> = {
table: Table;
data: Schema;
query?: ServerQueryParam<Schema>;
targetId?: number | string;
};
export default function DbUpdate<T extends {
export default function DbUpdate<Schema extends {
[k: string]: any;
} = {
[k: string]: any;
}>({ table, data, query, targetId }: Params<T>): Promise<APIResponseObject>;
}, Table extends string = string>({ table, data, query, targetId, }: Params<Schema, Table>): Promise<APIResponseObject>;
export {};

View File

@ -1,7 +1,7 @@
import DbClient from ".";
import _ from "lodash";
import sqlGenerator from "../../utils/sql-generator";
export default async function DbUpdate({ table, data, query, targetId }) {
export default async function DbUpdate({ table, data, query, targetId, }) {
try {
let finalQuery = query || {};
if (targetId) {

View File

@ -1,6 +1,6 @@
{
"name": "@moduletrace/bun-sqlite",
"version": "1.0.4",
"version": "1.0.5",
"description": "SQLite manager for Bun",
"author": "Benjamin Toby",
"main": "dist/index.js",

View File

@ -3,15 +3,23 @@ import _ from "lodash";
import type { APIResponseObject, ServerQueryParam } from "../../types";
import sqlGenerator from "../../utils/sql-generator";
type Params<T extends { [k: string]: any } = { [k: string]: any }> = {
table: string;
query?: ServerQueryParam<T>;
type Params<
Schema extends { [k: string]: any } = { [k: string]: any },
Table extends string = string,
> = {
table: Table;
query?: ServerQueryParam<Schema>;
targetId?: number | string;
};
export default async function DbDelete<
T extends { [k: string]: any } = { [k: string]: any },
>({ table, query, targetId }: Params<T>): Promise<APIResponseObject> {
Schema extends { [k: string]: any } = { [k: string]: any },
Table extends string = string,
>({
table,
query,
targetId,
}: Params<Schema, Table>): Promise<APIResponseObject> {
try {
let finalQuery = query || {};

View File

@ -2,14 +2,18 @@ import DbClient from ".";
import type { APIResponseObject } from "../../types";
import sqlInsertGenerator from "../../utils/sql-insert-generator";
type Params<T extends { [k: string]: any } = { [k: string]: any }> = {
table: string;
data: T[];
type Params<
Schema extends { [k: string]: any } = { [k: string]: any },
Table extends string = string,
> = {
table: Table;
data: Schema[];
};
export default async function DbInsert<
T extends { [k: string]: any } = { [k: string]: any },
>({ table, data }: Params<T>): Promise<APIResponseObject> {
Schema extends { [k: string]: any } = { [k: string]: any },
Table extends string = string,
>({ table, data }: Params<Schema, Table>): Promise<APIResponseObject> {
try {
const finalData: { [k: string]: any }[] = data.map((d) => ({
...d,

View File

@ -4,16 +4,25 @@ import _ from "lodash";
import type { APIResponseObject, ServerQueryParam } from "../../types";
import sqlGenerator from "../../utils/sql-generator";
type Params<T extends { [k: string]: any } = { [k: string]: any }> = {
query?: ServerQueryParam<T>;
table: string;
type Params<
Schema extends { [k: string]: any } = { [k: string]: any },
Table extends string = string,
> = {
query?: ServerQueryParam<Schema>;
table: Table;
count?: boolean;
targetId?: number | string;
};
export default async function DbSelect<
T extends { [k: string]: any } = { [k: string]: any },
>({ table, query, count, targetId }: Params<T>): Promise<APIResponseObject<T>> {
Schema extends { [k: string]: any } = { [k: string]: any },
Table extends string = string,
>({
table,
query,
count,
targetId,
}: Params<Schema, Table>): Promise<APIResponseObject<Schema>> {
try {
let finalQuery = query || {};
@ -38,10 +47,10 @@ export default async function DbSelect<
const sql = mysql.format(sqlObj.string, sqlObj.values);
const res = DbClient.query<T, T[]>(sql);
const res = DbClient.query<Schema, Schema[]>(sql);
const batchRes = res.all();
let resp: APIResponseObject<T> = {
let resp: APIResponseObject<Schema> = {
success: Boolean(batchRes[0]),
payload: batchRes,
singleRes: batchRes[0],

View File

@ -3,16 +3,25 @@ import _ from "lodash";
import type { APIResponseObject, ServerQueryParam } from "../../types";
import sqlGenerator from "../../utils/sql-generator";
type Params<T extends { [k: string]: any } = { [k: string]: any }> = {
table: string;
data: T;
query?: ServerQueryParam<T>;
type Params<
Schema extends { [k: string]: any } = { [k: string]: any },
Table extends string = string,
> = {
table: Table;
data: Schema;
query?: ServerQueryParam<Schema>;
targetId?: number | string;
};
export default async function DbUpdate<
T extends { [k: string]: any } = { [k: string]: any },
>({ table, data, query, targetId }: Params<T>): Promise<APIResponseObject> {
Schema extends { [k: string]: any } = { [k: string]: any },
Table extends string = string,
>({
table,
data,
query,
targetId,
}: Params<Schema, Table>): Promise<APIResponseObject> {
try {
let finalQuery = query || {};