This commit is contained in:
Benjamin Toby 2025-02-19 08:39:03 +01:00
parent 8b3553fcd5
commit 2e0b6d0a70
26 changed files with 387 additions and 14 deletions

View File

@ -23,7 +23,7 @@ const hashPassword_1 = __importDefault(require("../../dsql/hashPassword"));
function googleLogin(_a) {
return __awaiter(this, arguments, void 0, function* ({ usertype, foundUser, isSocialValidated, isUserValid, reqBody, serverRes, loginFailureReason, }) {
var _b;
const client = new google_auth_library_1.OAuth2Client(process.env.NEXT_PUBLIC_DSQL_GOOGLE_CLIENT_ID);
const client = new google_auth_library_1.OAuth2Client(process.env.DSQL_GOOGLE_CLIENT_ID);
let isGoogleAuthValid = false;
let newFoundUser = null;
////////////////////////////////////////////////
@ -32,7 +32,7 @@ function googleLogin(_a) {
try {
const ticket = yield client.verifyIdToken({
idToken: reqBody.token,
audience: process.env.NEXT_PUBLIC_DSQL_GOOGLE_CLIENT_ID, // Specify the CLIENT_ID of the app that accesses the backend
audience: process.env.DSQL_GOOGLE_CLIENT_ID, // Specify the CLIENT_ID of the app that accesses the backend
// Or, if multiple clients access the backend:
//[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3]
});

View File

@ -0,0 +1,10 @@
import { DSQL_DATASQUIREL_PROCESS_QUEUE } from "../../../types/dsql";
type Param = {
queue: DSQL_DATASQUIREL_PROCESS_QUEUE;
userId: string | number;
dummy?: boolean;
};
export default function addQueue({ queue, userId, dummy }: Param): Promise<(import("../../../types").PostReturn & {
queryObject?: ReturnType<Awaited<typeof import("../../dsql/sql/sql-generator").default>>;
}) | null | undefined>;
export {};

View File

@ -0,0 +1,46 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = addQueue;
const get_queue_1 = __importDefault(require("./get-queue"));
const crud_1 = __importDefault(require("../../../utils/data-fetching/crud"));
const numberfy_1 = __importDefault(require("../../../utils/numberfy"));
function addQueue(_a) {
return __awaiter(this, arguments, void 0, function* ({ queue, userId, dummy }) {
const tableName = "process_queue";
const existingQueueRes = dummy
? undefined
: (yield (0, get_queue_1.default)({
query: {
query: {
user_id: {
value: String(userId),
},
job_type: {
value: String(queue.job_type),
},
},
},
}));
const existingQueue = existingQueueRes === null || existingQueueRes === void 0 ? void 0 : existingQueueRes[0];
if ((existingQueue === null || existingQueue === void 0 ? void 0 : existingQueue.id) && !dummy)
return undefined;
const addQueueRes = yield (0, crud_1.default)({
action: "insert",
table: tableName,
data: Object.assign(Object.assign({}, queue), { user_id: (0, numberfy_1.default)(userId) }),
});
return addQueueRes;
});
}

View File

@ -0,0 +1,6 @@
type Param = {
queueId: string | number;
userId: string | number;
};
export default function deleteQueue({ queueId, userId }: Param): Promise<boolean>;
export {};

View File

@ -0,0 +1,31 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = deleteQueue;
const crud_1 = __importDefault(require("../../../utils/data-fetching/crud"));
const get_queue_1 = __importDefault(require("./get-queue"));
function deleteQueue(_a) {
return __awaiter(this, arguments, void 0, function* ({ queueId, userId }) {
const tableName = "process_queue";
const existingQueue = (yield (0, get_queue_1.default)({ userId, queueId }));
if (!(existingQueue === null || existingQueue === void 0 ? void 0 : existingQueue.id))
return false;
const deleteQueueRes = yield (0, crud_1.default)({
action: "delete",
table: tableName,
targetId: existingQueue.id,
});
return Boolean(deleteQueueRes === null || deleteQueueRes === void 0 ? void 0 : deleteQueueRes.success);
});
}

View File

@ -0,0 +1,10 @@
import { DSQL_DATASQUIREL_PROCESS_QUEUE } from "../../../types/dsql";
import { DsqlCrudQueryObject } from "../../../types";
type Param = {
queueId?: string | number;
userId?: string | number;
query?: DsqlCrudQueryObject<DSQL_DATASQUIREL_PROCESS_QUEUE>;
single?: boolean;
};
export default function getQueue({ queueId, userId, query, single, }: Param): Promise<DSQL_DATASQUIREL_PROCESS_QUEUE | DSQL_DATASQUIREL_PROCESS_QUEUE[] | undefined>;
export {};

View File

@ -0,0 +1,35 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = getQueue;
const crud_1 = __importDefault(require("../../../utils/data-fetching/crud"));
function getQueue(_a) {
return __awaiter(this, arguments, void 0, function* ({ queueId, userId, query, single, }) {
const tableName = "process_queue";
let queryQuery = {};
if (queueId) {
queryQuery = Object.assign(Object.assign({}, queryQuery), { id: { value: String(queueId) } });
}
if (userId) {
queryQuery = Object.assign(Object.assign({}, queryQuery), { user_id: { value: String(userId) } });
}
const getQueue = yield (0, crud_1.default)({
action: "get",
table: tableName,
query: Object.assign(Object.assign({}, query), { query: Object.assign(Object.assign({}, query === null || query === void 0 ? void 0 : query.query), queryQuery) }),
});
const queuePayload = getQueue === null || getQueue === void 0 ? void 0 : getQueue.payload;
return queueId || single ? queuePayload === null || queuePayload === void 0 ? void 0 : queuePayload[0] : queuePayload;
});
}

View File

@ -0,0 +1,7 @@
import { DSQL_DATASQUIREL_PROCESS_QUEUE } from "../../../types/dsql";
type Param = {
queueId: string | number;
queue: DSQL_DATASQUIREL_PROCESS_QUEUE;
};
export default function updateQueue({ queueId, queue }: Param): Promise<boolean>;
export {};

View File

@ -0,0 +1,28 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = updateQueue;
const crud_1 = __importDefault(require("../../../utils/data-fetching/crud"));
function updateQueue(_a) {
return __awaiter(this, arguments, void 0, function* ({ queueId, queue }) {
const tableName = "process_queue";
const updateQueueRes = yield (0, crud_1.default)({
action: "update",
table: tableName,
targetId: queueId,
data: queue,
});
return Boolean(updateQueueRes === null || updateQueueRes === void 0 ? void 0 : updateQueueRes.success);
});
}

View File

@ -8,7 +8,7 @@ exports.default = sqlGenerator;
function sqlGenerator({ tableName, genObject, dbFullName }) {
if (!genObject)
return undefined;
const finalQuery = genObject.query ? genObject.query : undefined;
const finalQuery = (genObject === null || genObject === void 0 ? void 0 : genObject.query) ? genObject.query : undefined;
const queryKeys = finalQuery ? Object.keys(finalQuery) : undefined;
const sqlSearhValues = [];
const finalDbName = dbFullName ? `${dbFullName}.` : "";

View File

@ -7,5 +7,5 @@ type Param = {
* # Create database from Schema Function
* @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database
*/
export default function createDbFromSchema({ userId, targetDatabase, dbSchemaData, }: Param): Promise<void>;
export default function createDbFromSchema({ userId, targetDatabase, dbSchemaData, }: Param): Promise<boolean>;
export {};

View File

@ -39,7 +39,7 @@ function createDbFromSchema(_a) {
ejson_1.default.parse(fs_1.default.readFileSync(schemaPath, "utf8"));
if (!dbSchema) {
console.log("Schema Not Found!");
return;
return false;
}
for (let i = 0; i < dbSchema.length; i++) {
const database = dbSchema[i];
@ -195,5 +195,6 @@ function createDbFromSchema(_a) {
}
}
}
return true;
});
}

View File

@ -1,4 +1,4 @@
export declare const DsqlTables: readonly ["users", "mariadb_users", "api_keys", "invitations", "user_users", "delegated_user_tables", "user_databases", "user_database_tables", "user_media", "delegated_users", "unsubscribes", "notifications", "docs_pages", "docs_page_extra_links", "deleted_api_keys", "servers"];
export declare const DsqlTables: readonly ["users", "mariadb_users", "api_keys", "invitations", "user_users", "delegated_user_tables", "user_databases", "user_database_tables", "user_media", "delegated_users", "unsubscribes", "notifications", "docs_pages", "docs_page_extra_links", "deleted_api_keys", "servers", "process_queue"];
export type DSQL_DATASQUIREL_USERS = {
id?: number;
uuid?: string;
@ -288,3 +288,22 @@ export type DSQL_DATASQUIREL_SERVERS = {
date_updated_code?: number;
date_updated_timestamp?: string;
};
export type DSQL_DATASQUIREL_PROCESS_QUEUE = {
id?: number;
uuid?: string;
user_id?: number;
title?: string;
job_type?: string;
data?: string;
running?: number;
server_id?: number;
error?: number;
error_message?: string;
success?: number;
date_created?: string;
date_created_code?: number;
date_created_timestamp?: string;
date_updated?: string;
date_updated_code?: number;
date_updated_timestamp?: string;
};

View File

@ -18,4 +18,5 @@ exports.DsqlTables = [
"docs_page_extra_links",
"deleted_api_keys",
"servers",
"process_queue",
];

View File

@ -21,5 +21,6 @@ export default function grabDirNames(param?: Param): {
userPrivateDbExportZipFilePath: string | undefined;
userPrivateDbImportZipFileName: string;
userPrivateDbImportZipFilePath: string | undefined;
dbNginxLoadBalancerConfigFile: string;
};
export {};

View File

@ -50,6 +50,7 @@ function grabDirNames(param) {
const userPrivateDbImportZipFilePath = userPrivateSQLExportsDir
? path_1.default.join(userPrivateSQLExportsDir, userPrivateDbImportZipFileName)
: undefined;
const dbNginxLoadBalancerConfigFile = path_1.default.join(appDir, "docker/mariadb/load-balancer/config/template/nginx.conf");
return {
schemasDir,
userDirPath,
@ -68,5 +69,6 @@ function grabDirNames(param) {
userPrivateDbExportZipFilePath,
userPrivateDbImportZipFileName,
userPrivateDbImportZipFilePath,
dbNginxLoadBalancerConfigFile,
};
}

View File

@ -26,9 +26,7 @@ export default async function googleLogin({
serverRes,
loginFailureReason,
}: Param) {
const client = new OAuth2Client(
process.env.NEXT_PUBLIC_DSQL_GOOGLE_CLIENT_ID
);
const client = new OAuth2Client(process.env.DSQL_GOOGLE_CLIENT_ID);
let isGoogleAuthValid = false;
let newFoundUser = null;
@ -39,7 +37,7 @@ export default async function googleLogin({
try {
const ticket = await client.verifyIdToken({
idToken: reqBody.token,
audience: process.env.NEXT_PUBLIC_DSQL_GOOGLE_CLIENT_ID, // Specify the CLIENT_ID of the app that accesses the backend
audience: process.env.DSQL_GOOGLE_CLIENT_ID, // Specify the CLIENT_ID of the app that accesses the backend
// Or, if multiple clients access the backend:
//[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3]
});

View File

@ -0,0 +1,44 @@
import getQueue from "./get-queue";
import {
DSQL_DATASQUIREL_PROCESS_QUEUE,
DsqlTables,
} from "../../../types/dsql";
import dsqlCrud from "../../../utils/data-fetching/crud";
import numberfy from "../../../utils/numberfy";
type Param = {
queue: DSQL_DATASQUIREL_PROCESS_QUEUE;
userId: string | number;
dummy?: boolean;
};
export default async function addQueue({ queue, userId, dummy }: Param) {
const tableName: (typeof DsqlTables)[number] = "process_queue";
const existingQueueRes = dummy
? undefined
: ((await getQueue({
query: {
query: {
user_id: {
value: String(userId),
},
job_type: {
value: String(queue.job_type),
},
},
},
})) as DSQL_DATASQUIREL_PROCESS_QUEUE[] | undefined);
const existingQueue = existingQueueRes?.[0];
if (existingQueue?.id && !dummy) return undefined;
const addQueueRes = await dsqlCrud<DSQL_DATASQUIREL_PROCESS_QUEUE>({
action: "insert",
table: tableName,
data: { ...queue, user_id: numberfy(userId) },
});
return addQueueRes;
}

View File

@ -0,0 +1,29 @@
import dsqlCrud from "../../../utils/data-fetching/crud";
import getQueue from "./get-queue";
import {
DSQL_DATASQUIREL_PROCESS_QUEUE,
DsqlTables,
} from "../../../types/dsql";
type Param = {
queueId: string | number;
userId: string | number;
};
export default async function deleteQueue({ queueId, userId }: Param) {
const tableName: (typeof DsqlTables)[number] = "process_queue";
const existingQueue = (await getQueue({ userId, queueId })) as
| DSQL_DATASQUIREL_PROCESS_QUEUE
| undefined;
if (!existingQueue?.id) return false;
const deleteQueueRes = await dsqlCrud<DSQL_DATASQUIREL_PROCESS_QUEUE>({
action: "delete",
table: tableName,
targetId: existingQueue.id,
});
return Boolean(deleteQueueRes?.success);
}

View File

@ -0,0 +1,53 @@
import {
DSQL_DATASQUIREL_PROCESS_QUEUE,
DsqlTables,
} from "../../../types/dsql";
import dsqlCrud from "../../../utils/data-fetching/crud";
import { DsqlCrudQueryObject, ServerQueryQueryObject } from "../../../types";
type Param = {
queueId?: string | number;
userId?: string | number;
query?: DsqlCrudQueryObject<DSQL_DATASQUIREL_PROCESS_QUEUE>;
single?: boolean;
};
export default async function getQueue({
queueId,
userId,
query,
single,
}: Param) {
const tableName: (typeof DsqlTables)[number] = "process_queue";
let queryQuery: ServerQueryQueryObject<DSQL_DATASQUIREL_PROCESS_QUEUE> = {};
if (queueId) {
queryQuery = { ...queryQuery, ...{ id: { value: String(queueId) } } };
}
if (userId) {
queryQuery = {
...queryQuery,
...{ user_id: { value: String(userId) } },
};
}
const getQueue = await dsqlCrud<DSQL_DATASQUIREL_PROCESS_QUEUE>({
action: "get",
table: tableName,
query: {
...query,
query: {
...query?.query,
...queryQuery,
},
},
});
const queuePayload = getQueue?.payload as
| DSQL_DATASQUIREL_PROCESS_QUEUE[]
| undefined;
return queueId || single ? queuePayload?.[0] : queuePayload;
}

View File

@ -0,0 +1,23 @@
import dsqlCrud from "../../../utils/data-fetching/crud";
import {
DSQL_DATASQUIREL_PROCESS_QUEUE,
DsqlTables,
} from "../../../types/dsql";
type Param = {
queueId: string | number;
queue: DSQL_DATASQUIREL_PROCESS_QUEUE;
};
export default async function updateQueue({ queueId, queue }: Param) {
const tableName: (typeof DsqlTables)[number] = "process_queue";
const updateQueueRes = await dsqlCrud<DSQL_DATASQUIREL_PROCESS_QUEUE>({
action: "update",
table: tableName,
targetId: queueId,
data: queue,
});
return Boolean(updateQueueRes?.success);
}

View File

@ -26,7 +26,7 @@ export default function sqlGenerator<
>({ tableName, genObject, dbFullName }: Param<T>): Return {
if (!genObject) return undefined;
const finalQuery = genObject.query ? genObject.query : undefined;
const finalQuery = genObject?.query ? genObject.query : undefined;
const queryKeys = finalQuery ? Object.keys(finalQuery) : undefined;

View File

@ -26,7 +26,7 @@ export default async function createDbFromSchema({
userId,
targetDatabase,
dbSchemaData,
}: Param) {
}: Param): Promise<boolean> {
const { userSchemaMainJSONFilePath, mainShemaJSONFilePath } = grabDirNames({
userId,
});
@ -41,7 +41,7 @@ export default async function createDbFromSchema({
if (!dbSchema) {
console.log("Schema Not Found!");
return;
return false;
}
for (let i = 0; i < dbSchema.length; i++) {
@ -228,4 +228,6 @@ export default async function createDbFromSchema({
}
}
}
return true;
}

View File

@ -15,6 +15,7 @@ export const DsqlTables = [
"docs_page_extra_links",
"deleted_api_keys",
"servers",
"process_queue",
] as const
export type DSQL_DATASQUIREL_USERS = {
@ -320,4 +321,24 @@ export type DSQL_DATASQUIREL_SERVERS = {
date_updated?: string;
date_updated_code?: number;
date_updated_timestamp?: string;
}
export type DSQL_DATASQUIREL_PROCESS_QUEUE = {
id?: number;
uuid?: string;
user_id?: number;
title?: string;
job_type?: string;
data?: string;
running?: number;
server_id?: number;
error?: number;
error_message?: string;
success?: number;
date_created?: string;
date_created_code?: number;
date_created_timestamp?: string;
date_updated?: string;
date_updated_code?: number;
date_updated_timestamp?: string;
}

View File

@ -62,6 +62,11 @@ export default function grabDirNames(param?: Param) {
? path.join(userPrivateSQLExportsDir, userPrivateDbImportZipFileName)
: undefined;
const dbNginxLoadBalancerConfigFile = path.join(
appDir,
"docker/mariadb/load-balancer/config/template/nginx.conf"
);
return {
schemasDir,
userDirPath,
@ -80,5 +85,6 @@ export default function grabDirNames(param?: Param) {
userPrivateDbExportZipFilePath,
userPrivateDbImportZipFileName,
userPrivateDbImportZipFilePath,
dbNginxLoadBalancerConfigFile,
};
}

View File

@ -1,6 +1,6 @@
{
"name": "@moduletrace/datasquirel",
"version": "4.1.3",
"version": "4.1.4",
"description": "Cloud-based SQL data management tool",
"main": "dist/index.js",
"bin": {