u
This commit is contained in:
@@ -19,13 +19,23 @@ function normalizeParamValue(value) {
|
||||
return value;
|
||||
}
|
||||
|
||||
function bindParams(params) {
|
||||
return Object.fromEntries(
|
||||
function bindParams(params, sql = null) {
|
||||
const bound = Object.fromEntries(
|
||||
Object.entries(params).map(([key, value]) => [
|
||||
key.replace(/^[@:$]/, ''),
|
||||
normalizeParamValue(value),
|
||||
]),
|
||||
);
|
||||
if (typeof sql === 'string') {
|
||||
const matches = sql.matchAll(/[@:$]([a-zA-Z0-9_]+)/g);
|
||||
for (const match of matches) {
|
||||
const name = match[1];
|
||||
if (!(name in bound)) {
|
||||
bound[name] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
return bound;
|
||||
}
|
||||
|
||||
function normalizeInsertId(value) {
|
||||
@@ -227,7 +237,7 @@ export class BetterSqlite3Executor {
|
||||
/** @returns {Promise<import('../provider.js').QueryResult>} */
|
||||
async query(sql, params = {}) {
|
||||
const statement = this.db.prepare(sql);
|
||||
const bindings = bindParams(params);
|
||||
const bindings = bindParams(params, sql);
|
||||
|
||||
if (statement.reader) {
|
||||
const rows = statement.all(bindings);
|
||||
|
||||
16
src/providers/sqlite3/queries/mcp.js
Normal file
16
src/providers/sqlite3/queries/mcp.js
Normal file
@@ -0,0 +1,16 @@
|
||||
import * as source from '../../mssql/queries/mcp.js';
|
||||
import { translateQueries } from './translate.js';
|
||||
|
||||
const queries = translateQueries(source, 'mcp');
|
||||
export const {
|
||||
INSERT_CLIENT,
|
||||
GET_CLIENT,
|
||||
LIST_CLIENTS,
|
||||
DELETE_CLIENT,
|
||||
INSERT_AUTH_CODE,
|
||||
GET_AUTH_CODE,
|
||||
CONSUME_AUTH_CODE,
|
||||
INSERT_REFRESH_TOKEN,
|
||||
GET_REFRESH_TOKEN,
|
||||
REVOKE_REFRESH_TOKEN,
|
||||
} = queries;
|
||||
@@ -845,6 +845,50 @@ CREATE TABLE IF NOT EXISTS package (
|
||||
);
|
||||
`;
|
||||
|
||||
export const INIT_MCP_CLIENT = `
|
||||
CREATE TABLE IF NOT EXISTS mcp_client (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
client_id TEXT NOT NULL UNIQUE,
|
||||
client_secret TEXT,
|
||||
client_name TEXT NOT NULL,
|
||||
redirect_uris TEXT NOT NULL,
|
||||
grant_types TEXT,
|
||||
response_types TEXT,
|
||||
scope TEXT,
|
||||
created_at TEXT NOT NULL DEFAULT (${UTC_NOW})
|
||||
);
|
||||
`;
|
||||
|
||||
export const INIT_MCP_AUTH_CODE = `
|
||||
CREATE TABLE IF NOT EXISTS mcp_auth_code (
|
||||
code TEXT PRIMARY KEY,
|
||||
client_id TEXT NOT NULL,
|
||||
google_auth_id INTEGER NOT NULL,
|
||||
redirect_uri TEXT NOT NULL,
|
||||
code_challenge TEXT NOT NULL,
|
||||
code_challenge_method TEXT NOT NULL,
|
||||
scope TEXT,
|
||||
expires_at TEXT NOT NULL,
|
||||
used INTEGER NOT NULL DEFAULT 0,
|
||||
created_at TEXT NOT NULL DEFAULT (${UTC_NOW}),
|
||||
FOREIGN KEY (google_auth_id) REFERENCES google_auth(id) ON DELETE CASCADE
|
||||
);
|
||||
`;
|
||||
|
||||
export const INIT_MCP_TOKEN = `
|
||||
CREATE TABLE IF NOT EXISTS mcp_token (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
refresh_token TEXT NOT NULL UNIQUE,
|
||||
client_id TEXT NOT NULL,
|
||||
google_auth_id INTEGER NOT NULL,
|
||||
scope TEXT,
|
||||
expires_at TEXT NOT NULL,
|
||||
revoked INTEGER NOT NULL DEFAULT 0,
|
||||
created_at TEXT NOT NULL DEFAULT (${UTC_NOW}),
|
||||
FOREIGN KEY (google_auth_id) REFERENCES google_auth(id) ON DELETE CASCADE
|
||||
);
|
||||
`;
|
||||
|
||||
/** DDL scripts in dependency order for SQLite schema initialization. */
|
||||
export const SCHEMA_SCRIPTS = [
|
||||
INIT_META,
|
||||
@@ -909,4 +953,7 @@ export const SCHEMA_SCRIPTS = [
|
||||
INIT_PAYMENT,
|
||||
INIT_SHIPPING,
|
||||
INIT_PACKAGE,
|
||||
INIT_MCP_CLIENT,
|
||||
INIT_MCP_AUTH_CODE,
|
||||
INIT_MCP_TOKEN,
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user