Updates
This commit is contained in:
parent
8f00f333aa
commit
d586de0639
15
dist/package-shared/functions/api/query/get.js
vendored
15
dist/package-shared/functions/api/query/get.js
vendored
@ -26,11 +26,6 @@ function apiGet(_a) {
|
|||||||
query.match(/^alter|^delete|information_schema|databases|^create/i)) {
|
query.match(/^alter|^delete|information_schema|databases|^create/i)) {
|
||||||
return { success: false, msg: "Wrong Input." };
|
return { success: false, msg: "Wrong Input." };
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Create new user folder and file
|
|
||||||
*
|
|
||||||
* @description Create new user folder and file
|
|
||||||
*/
|
|
||||||
let results;
|
let results;
|
||||||
try {
|
try {
|
||||||
let { result, error } = yield (0, runQuery_1.default)({
|
let { result, error } = yield (0, runQuery_1.default)({
|
||||||
@ -42,7 +37,6 @@ function apiGet(_a) {
|
|||||||
tableName,
|
tableName,
|
||||||
local: useLocal,
|
local: useLocal,
|
||||||
});
|
});
|
||||||
/** @type {import("../../../types").DSQL_TableSchemaType | undefined} */
|
|
||||||
let tableSchema;
|
let tableSchema;
|
||||||
if (dbSchema) {
|
if (dbSchema) {
|
||||||
const targetTable = dbSchema.tables.find((table) => table.tableName === tableName);
|
const targetTable = dbSchema.tables.find((table) => table.tableName === tableName);
|
||||||
@ -63,7 +57,6 @@ function apiGet(_a) {
|
|||||||
if (result.error)
|
if (result.error)
|
||||||
throw new Error(result.error);
|
throw new Error(result.error);
|
||||||
results = result;
|
results = result;
|
||||||
/** @type {import("../../../types").GetReturn} */
|
|
||||||
const resObject = {
|
const resObject = {
|
||||||
success: true,
|
success: true,
|
||||||
payload: results,
|
payload: results,
|
||||||
@ -71,12 +64,16 @@ function apiGet(_a) {
|
|||||||
};
|
};
|
||||||
return resObject;
|
return resObject;
|
||||||
}
|
}
|
||||||
catch ( /** @type {any} */error) {
|
catch (error) {
|
||||||
(0, serverError_1.default)({
|
(0, serverError_1.default)({
|
||||||
component: "/api/query/get/lines-85-94",
|
component: "/api/query/get/lines-85-94",
|
||||||
message: error.message,
|
message: error.message,
|
||||||
});
|
});
|
||||||
return { success: false, payload: null, error: error.message };
|
return {
|
||||||
|
success: false,
|
||||||
|
payload: null,
|
||||||
|
error: error.message,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ const loginSocialUser_1 = __importDefault(require("./loginSocialUser"));
|
|||||||
function handleSocialDb(_a) {
|
function handleSocialDb(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ database, social_id, email, social_platform, payload, invitation, supEmail, additionalFields, useLocal, }) {
|
return __awaiter(this, arguments, void 0, function* ({ database, social_id, email, social_platform, payload, invitation, supEmail, additionalFields, useLocal, }) {
|
||||||
try {
|
try {
|
||||||
const existingSocialIdUserQuery = `SELECT * FROM users WHERE social_id = ? AND social_login='1' AND social_platform = ? `;
|
const existingSocialIdUserQuery = `SELECT * FROM datasquirel.users WHERE social_id = ? AND social_login='1' AND social_platform = ? `;
|
||||||
const existingSocialIdUserValues = [
|
const existingSocialIdUserValues = [
|
||||||
social_id.toString(),
|
social_id.toString(),
|
||||||
social_platform,
|
social_platform,
|
||||||
@ -56,7 +56,7 @@ function handleSocialDb(_a) {
|
|||||||
msg: "No Email Present",
|
msg: "No Email Present",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
const existingEmailOnlyQuery = `SELECT * FROM users WHERE email='${finalEmail}'`;
|
const existingEmailOnlyQuery = `SELECT * FROM datasquirel.users WHERE email='${finalEmail}'`;
|
||||||
let existingEmailOnly = yield (0, varDatabaseDbHandler_1.default)({
|
let existingEmailOnly = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
database: database ? database : "datasquirel",
|
database: database ? database : "datasquirel",
|
||||||
queryString: existingEmailOnlyQuery,
|
queryString: existingEmailOnlyQuery,
|
||||||
@ -69,7 +69,7 @@ function handleSocialDb(_a) {
|
|||||||
msg: "This Email is already taken",
|
msg: "This Email is already taken",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
const foundUserQuery = `SELECT * FROM users WHERE email=? AND social_login='1' AND social_platform=? AND social_id=?`;
|
const foundUserQuery = `SELECT * FROM datasquirel.users WHERE email=? AND social_login='1' AND social_platform=? AND social_id=?`;
|
||||||
const foundUserQueryValues = [finalEmail, social_platform, social_id];
|
const foundUserQueryValues = [finalEmail, social_platform, social_id];
|
||||||
const foundUser = yield (0, varDatabaseDbHandler_1.default)({
|
const foundUser = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
database: database ? database : "datasquirel",
|
database: database ? database : "datasquirel",
|
||||||
@ -116,7 +116,7 @@ function handleSocialDb(_a) {
|
|||||||
*/
|
*/
|
||||||
yield (0, addMariadbUser_1.default)({ userId: newUser.insertId, useLocal });
|
yield (0, addMariadbUser_1.default)({ userId: newUser.insertId, useLocal });
|
||||||
}
|
}
|
||||||
const newUserQueriedQuery = `SELECT * FROM users WHERE id='${newUser.insertId}'`;
|
const newUserQueriedQuery = `SELECT * FROM datasquirel.users WHERE id='${newUser.insertId}'`;
|
||||||
const newUserQueried = yield (0, varDatabaseDbHandler_1.default)({
|
const newUserQueried = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
database: database ? database : "datasquirel",
|
database: database ? database : "datasquirel",
|
||||||
queryString: newUserQueriedQuery,
|
queryString: newUserQueriedQuery,
|
||||||
|
@ -23,10 +23,11 @@ const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabas
|
|||||||
*/
|
*/
|
||||||
function loginSocialUser(_a) {
|
function loginSocialUser(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ user, social_platform, invitation, database, additionalFields, useLocal, }) {
|
return __awaiter(this, arguments, void 0, function* ({ user, social_platform, invitation, database, additionalFields, useLocal, }) {
|
||||||
const foundUserQuery = `SELECT * FROM users WHERE email=? AND social_id=? AND social_platform=?`;
|
const finalDbName = database ? database : "datasquirel";
|
||||||
|
const foundUserQuery = `SELECT * FROM \`${finalDbName}\`.\`users\` WHERE email=? AND social_id=? AND social_platform=?`;
|
||||||
const foundUserValues = [user.email, user.social_id, social_platform];
|
const foundUserValues = [user.email, user.social_id, social_platform];
|
||||||
const foundUser = yield (0, varDatabaseDbHandler_1.default)({
|
const foundUser = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
database: database ? database : "datasquirel",
|
database: finalDbName,
|
||||||
queryString: foundUserQuery,
|
queryString: foundUserQuery,
|
||||||
queryValuesArray: foundUserValues,
|
queryValuesArray: foundUserValues,
|
||||||
useLocal,
|
useLocal,
|
||||||
|
@ -46,7 +46,7 @@ function apiCreateUser(_a) {
|
|||||||
password: String(payload.password),
|
password: String(payload.password),
|
||||||
});
|
});
|
||||||
payload.password = hashedPassword;
|
payload.password = hashedPassword;
|
||||||
const fieldsQuery = `SHOW COLUMNS FROM users`;
|
const fieldsQuery = `SHOW COLUMNS FROM ${dbFullName}.users`;
|
||||||
let fields = yield (0, varDatabaseDbHandler_1.default)({
|
let fields = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: fieldsQuery,
|
queryString: fieldsQuery,
|
||||||
database: dbFullName,
|
database: dbFullName,
|
||||||
@ -91,7 +91,7 @@ function apiCreateUser(_a) {
|
|||||||
msg: `${invalidField} is not a valid field!`,
|
msg: `${invalidField} is not a valid field!`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
const existingUserQuery = `SELECT * FROM users WHERE email = ?${payload.username ? " OR username = ?" : ""}`;
|
const existingUserQuery = `SELECT * FROM ${dbFullName}.users WHERE email = ?${payload.username ? " OR username = ?" : ""}`;
|
||||||
const existingUserValues = payload.username
|
const existingUserValues = payload.username
|
||||||
? [payload.email, payload.username]
|
? [payload.email, payload.username]
|
||||||
: [payload.email];
|
: [payload.email];
|
||||||
@ -119,7 +119,7 @@ function apiCreateUser(_a) {
|
|||||||
useLocal,
|
useLocal,
|
||||||
});
|
});
|
||||||
if (addUser === null || addUser === void 0 ? void 0 : addUser.insertId) {
|
if (addUser === null || addUser === void 0 ? void 0 : addUser.insertId) {
|
||||||
const newlyAddedUserQuery = `SELECT id,first_name,last_name,email,username,phone,image,image_thumbnail,city,state,country,zip_code,address,verification_status,more_user_data FROM users WHERE id='${addUser.insertId}'`;
|
const newlyAddedUserQuery = `SELECT id,first_name,last_name,email,username,phone,image,image_thumbnail,city,state,country,zip_code,address,verification_status,more_user_data FROM ${dbFullName}.users WHERE id='${addUser.insertId}'`;
|
||||||
const newlyAddedUser = yield (0, varDatabaseDbHandler_1.default)({
|
const newlyAddedUser = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: newlyAddedUserQuery,
|
queryString: newlyAddedUserQuery,
|
||||||
database: dbFullName,
|
database: dbFullName,
|
||||||
|
@ -20,7 +20,7 @@ const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabas
|
|||||||
*/
|
*/
|
||||||
function apiDeleteUser(_a) {
|
function apiDeleteUser(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ dbFullName, deletedUserId, useLocal, }) {
|
return __awaiter(this, arguments, void 0, function* ({ dbFullName, deletedUserId, useLocal, }) {
|
||||||
const existingUserQuery = `SELECT * FROM users WHERE id = ?`;
|
const existingUserQuery = `SELECT * FROM ${dbFullName}.users WHERE id = ?`;
|
||||||
const existingUserValues = [deletedUserId];
|
const existingUserValues = [deletedUserId];
|
||||||
const existingUser = yield (0, varDatabaseDbHandler_1.default)({
|
const existingUser = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: existingUserQuery,
|
queryString: existingUserQuery,
|
||||||
|
@ -19,12 +19,13 @@ const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabas
|
|||||||
*/
|
*/
|
||||||
function apiGetUser(_a) {
|
function apiGetUser(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ fields, dbFullName, userId, useLocal, }) {
|
return __awaiter(this, arguments, void 0, function* ({ fields, dbFullName, userId, useLocal, }) {
|
||||||
const query = `SELECT ${fields.join(",")} FROM users WHERE id=?`;
|
const finalDbName = dbFullName.replace(/[^a-z0-9_]/g, "");
|
||||||
|
const query = `SELECT ${fields.join(",")} FROM ${finalDbName}.users WHERE id=?`;
|
||||||
const API_USER_ID = userId || process.env.DSQL_API_USER_ID;
|
const API_USER_ID = userId || process.env.DSQL_API_USER_ID;
|
||||||
let foundUser = yield (0, varDatabaseDbHandler_1.default)({
|
let foundUser = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: query,
|
queryString: query,
|
||||||
queryValuesArray: [API_USER_ID],
|
queryValuesArray: [API_USER_ID],
|
||||||
database: dbFullName.replace(/[^a-z0-9_]/g, ""),
|
database: finalDbName,
|
||||||
useLocal,
|
useLocal,
|
||||||
});
|
});
|
||||||
if (!foundUser || !foundUser[0]) {
|
if (!foundUser || !foundUser[0]) {
|
||||||
|
@ -20,7 +20,7 @@ const hashPassword_1 = __importDefault(require("../../dsql/hashPassword"));
|
|||||||
*/
|
*/
|
||||||
function apiLoginUser(_a) {
|
function apiLoginUser(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ encryptionKey, email, username, password, database, additionalFields, email_login, email_login_code, email_login_field, token, skipPassword, social, useLocal, }) {
|
return __awaiter(this, arguments, void 0, function* ({ encryptionKey, email, username, password, database, additionalFields, email_login, email_login_code, email_login_field, token, skipPassword, social, useLocal, }) {
|
||||||
const dbFullName = database;
|
const dbFullName = database.replace(/[^a-z0-9_]/g, "");
|
||||||
/**
|
/**
|
||||||
* Check input validity
|
* Check input validity
|
||||||
*
|
*
|
||||||
@ -46,9 +46,9 @@ function apiLoginUser(_a) {
|
|||||||
})
|
})
|
||||||
: null;
|
: null;
|
||||||
let foundUser = yield (0, varDatabaseDbHandler_1.default)({
|
let foundUser = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `SELECT * FROM users WHERE email = ? OR username = ?`,
|
queryString: `SELECT * FROM ${dbFullName}.users WHERE email = ? OR username = ?`,
|
||||||
queryValuesArray: [email, username],
|
queryValuesArray: [email, username],
|
||||||
database: dbFullName.replace(/[^a-z0-9_]/g, ""),
|
database: dbFullName,
|
||||||
useLocal,
|
useLocal,
|
||||||
});
|
});
|
||||||
if ((!foundUser || !foundUser[0]) && !social)
|
if ((!foundUser || !foundUser[0]) && !social)
|
||||||
@ -91,9 +91,9 @@ function apiLoginUser(_a) {
|
|||||||
}
|
}
|
||||||
if (isPasswordCorrect && email_login) {
|
if (isPasswordCorrect && email_login) {
|
||||||
const resetTempCode = yield (0, varDatabaseDbHandler_1.default)({
|
const resetTempCode = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `UPDATE users SET ${email_login_field} = '' WHERE email = ? OR username = ?`,
|
queryString: `UPDATE ${dbFullName}.users SET ${email_login_field} = '' WHERE email = ? OR username = ?`,
|
||||||
queryValuesArray: [email, username],
|
queryValuesArray: [email, username],
|
||||||
database: dbFullName.replace(/[^a-z0-9_]/g, ""),
|
database: dbFullName,
|
||||||
useLocal,
|
useLocal,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ function apiReauthUser(_a) {
|
|||||||
return __awaiter(this, arguments, void 0, function* ({ existingUser, database, additionalFields, useLocal, }) {
|
return __awaiter(this, arguments, void 0, function* ({ existingUser, database, additionalFields, useLocal, }) {
|
||||||
let foundUser = (existingUser === null || existingUser === void 0 ? void 0 : existingUser.id) && existingUser.id.toString().match(/./)
|
let foundUser = (existingUser === null || existingUser === void 0 ? void 0 : existingUser.id) && existingUser.id.toString().match(/./)
|
||||||
? yield (0, varDatabaseDbHandler_1.default)({
|
? yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `SELECT * FROM users WHERE id=?`,
|
queryString: `SELECT * FROM ${database}.users WHERE id=?`,
|
||||||
queryValuesArray: [existingUser.id.toString()],
|
queryValuesArray: [existingUser.id.toString()],
|
||||||
database,
|
database,
|
||||||
useLocal,
|
useLocal,
|
||||||
|
@ -30,7 +30,7 @@ function apiSendEmailCode(_a) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
const createdAt = Date.now();
|
const createdAt = Date.now();
|
||||||
const foundUserQuery = `SELECT * FROM users WHERE email = ?`;
|
const foundUserQuery = `SELECT * FROM ${database}.users WHERE email = ?`;
|
||||||
const foundUserValues = [email];
|
const foundUserValues = [email];
|
||||||
let foundUser = yield (0, varDatabaseDbHandler_1.default)({
|
let foundUser = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: foundUserQuery,
|
queryString: foundUserQuery,
|
||||||
@ -79,12 +79,12 @@ function apiSendEmailCode(_a) {
|
|||||||
const info = yield transporter.sendMail(mailObject);
|
const info = yield transporter.sendMail(mailObject);
|
||||||
if (!(info === null || info === void 0 ? void 0 : info.accepted))
|
if (!(info === null || info === void 0 ? void 0 : info.accepted))
|
||||||
throw new Error("Mail not Sent!");
|
throw new Error("Mail not Sent!");
|
||||||
const setTempCodeQuery = `UPDATE users SET ${email_login_field} = ? WHERE email = ?`;
|
const setTempCodeQuery = `UPDATE ${database}.users SET ${email_login_field} = ? WHERE email = ?`;
|
||||||
const setTempCodeValues = [tempCode + `-${createdAt}`, email];
|
const setTempCodeValues = [tempCode + `-${createdAt}`, email];
|
||||||
let setTempCode = yield (0, varDatabaseDbHandler_1.default)({
|
let setTempCode = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: setTempCodeQuery,
|
queryString: setTempCodeQuery,
|
||||||
queryValuesArray: setTempCodeValues,
|
queryValuesArray: setTempCodeValues,
|
||||||
database: database,
|
database,
|
||||||
useLocal,
|
useLocal,
|
||||||
});
|
});
|
||||||
/** @type {import("../../../types").SendOneTimeCodeEmailResponse} */
|
/** @type {import("../../../types").SendOneTimeCodeEmailResponse} */
|
||||||
|
@ -23,7 +23,7 @@ const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabas
|
|||||||
*/
|
*/
|
||||||
function apiUpdateUser(_a) {
|
function apiUpdateUser(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ payload, dbFullName, updatedUserId, useLocal, dbSchema, }) {
|
return __awaiter(this, arguments, void 0, function* ({ payload, dbFullName, updatedUserId, useLocal, dbSchema, }) {
|
||||||
const existingUserQuery = `SELECT * FROM users WHERE id = ?`;
|
const existingUserQuery = `SELECT * FROM ${dbFullName}.users WHERE id = ?`;
|
||||||
const existingUserValues = [updatedUserId];
|
const existingUserValues = [updatedUserId];
|
||||||
const existingUser = yield (0, varDatabaseDbHandler_1.default)({
|
const existingUser = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: existingUserQuery,
|
queryString: existingUserQuery,
|
||||||
|
@ -90,8 +90,7 @@ function addDbEntry(_a) {
|
|||||||
? yield dbHandler(`SELECT * FROM \`${tableName}\` WHERE \`${duplicateColumnName}\`=?`, [duplicateColumnValue])
|
? yield dbHandler(`SELECT * FROM \`${tableName}\` WHERE \`${duplicateColumnName}\`=?`, [duplicateColumnValue])
|
||||||
: yield dbHandler({
|
: yield dbHandler({
|
||||||
paradigm: "Read Only",
|
paradigm: "Read Only",
|
||||||
database: dbFullName,
|
queryString: `SELECT * FROM \`${dbFullName}\`.\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`,
|
||||||
queryString: `SELECT * FROM \`${tableName}\` WHERE \`${duplicateColumnName}\`=?`,
|
|
||||||
queryValues: [duplicateColumnValue],
|
queryValues: [duplicateColumnValue],
|
||||||
});
|
});
|
||||||
if ((duplicateValue === null || duplicateValue === void 0 ? void 0 : duplicateValue[0]) && !update) {
|
if ((duplicateValue === null || duplicateValue === void 0 ? void 0 : duplicateValue[0]) && !update) {
|
||||||
@ -191,13 +190,12 @@ function addDbEntry(_a) {
|
|||||||
insertValuesArray.push(Date.now());
|
insertValuesArray.push(Date.now());
|
||||||
}
|
}
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
const query = `INSERT INTO \`${tableName}\` (${insertKeysArray.join(",")}) VALUES (${insertValuesArray.map(() => "?").join(",")})`;
|
const query = `INSERT INTO \`${dbFullName}\`.\`${tableName}\` (${insertKeysArray.join(",")}) VALUES (${insertValuesArray.map(() => "?").join(",")})`;
|
||||||
const queryValuesArray = insertValuesArray;
|
const queryValuesArray = insertValuesArray;
|
||||||
const newInsert = isMaster
|
const newInsert = isMaster
|
||||||
? yield dbHandler(query, queryValuesArray)
|
? yield dbHandler(query, queryValuesArray)
|
||||||
: yield dbHandler({
|
: yield dbHandler({
|
||||||
paradigm,
|
paradigm,
|
||||||
database: dbFullName,
|
|
||||||
queryString: query,
|
queryString: query,
|
||||||
queryValues: queryValuesArray,
|
queryValues: queryValuesArray,
|
||||||
});
|
});
|
||||||
|
@ -41,13 +41,12 @@ function deleteDbEntry(_a) {
|
|||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
*/
|
*/
|
||||||
const query = `DELETE FROM ${tableName} WHERE \`${identifierColumnName}\`=?`;
|
const query = `DELETE FROM \`${dbFullName}\`.\`${tableName}\` WHERE \`${identifierColumnName}\`=?`;
|
||||||
const deletedEntry = isMaster
|
const deletedEntry = isMaster
|
||||||
? yield dbHandler(query, [identifierValue])
|
? yield dbHandler(query, [identifierValue])
|
||||||
: yield dbHandler({
|
: yield dbHandler({
|
||||||
paradigm,
|
paradigm,
|
||||||
queryString: query,
|
queryString: query,
|
||||||
database: dbFullName,
|
|
||||||
queryValues: [identifierValue],
|
queryValues: [identifierValue],
|
||||||
});
|
});
|
||||||
/**
|
/**
|
||||||
|
@ -71,7 +71,6 @@ function runQuery(_a) {
|
|||||||
result = yield (0, varReadOnlyDatabaseDbHandler_1.default)({
|
result = yield (0, varReadOnlyDatabaseDbHandler_1.default)({
|
||||||
queryString: formattedQuery,
|
queryString: formattedQuery,
|
||||||
queryValuesArray: queryValuesArray === null || queryValuesArray === void 0 ? void 0 : queryValuesArray.map((vl) => String(vl)),
|
queryValuesArray: queryValuesArray === null || queryValuesArray === void 0 ? void 0 : queryValuesArray.map((vl) => String(vl)),
|
||||||
database: dbFullName,
|
|
||||||
tableSchema,
|
tableSchema,
|
||||||
useLocal: local,
|
useLocal: local,
|
||||||
});
|
});
|
||||||
@ -80,7 +79,6 @@ function runQuery(_a) {
|
|||||||
result = yield (0, fullAccessDbHandler_1.default)({
|
result = yield (0, fullAccessDbHandler_1.default)({
|
||||||
queryString: formattedQuery,
|
queryString: formattedQuery,
|
||||||
queryValuesArray: queryValuesArray === null || queryValuesArray === void 0 ? void 0 : queryValuesArray.map((vl) => String(vl)),
|
queryValuesArray: queryValuesArray === null || queryValuesArray === void 0 ? void 0 : queryValuesArray.map((vl) => String(vl)),
|
||||||
database: dbFullName,
|
|
||||||
tableSchema,
|
tableSchema,
|
||||||
local,
|
local,
|
||||||
});
|
});
|
||||||
|
@ -126,13 +126,12 @@ function updateDbEntry(_a) {
|
|||||||
updateKeyValueArray.push(`date_updated_code='${Date.now()}'`);
|
updateKeyValueArray.push(`date_updated_code='${Date.now()}'`);
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
const query = `UPDATE ${tableName} SET ${updateKeyValueArray.join(",")} WHERE \`${identifierColumnName}\`=?`;
|
const query = `UPDATE \`${dbFullName}\`.\`${tableName}\` SET ${updateKeyValueArray.join(",")} WHERE \`${identifierColumnName}\`=?`;
|
||||||
updateValues.push(identifierValue);
|
updateValues.push(identifierValue);
|
||||||
const updatedEntry = isMaster
|
const updatedEntry = isMaster
|
||||||
? yield dbHandler(query, updateValues)
|
? yield dbHandler(query, updateValues)
|
||||||
: yield dbHandler({
|
: yield dbHandler({
|
||||||
paradigm,
|
paradigm,
|
||||||
database: dbFullName,
|
|
||||||
queryString: query,
|
queryString: query,
|
||||||
queryValues: updateValues,
|
queryValues: updateValues,
|
||||||
});
|
});
|
||||||
|
@ -15,18 +15,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||||||
exports.default = dbHandler;
|
exports.default = dbHandler;
|
||||||
const fs_1 = __importDefault(require("fs"));
|
const fs_1 = __importDefault(require("fs"));
|
||||||
const serverError_1 = __importDefault(require("./serverError"));
|
const serverError_1 = __importDefault(require("./serverError"));
|
||||||
const serverless_mysql_1 = __importDefault(require("serverless-mysql"));
|
|
||||||
const grabDbSSL_1 = __importDefault(require("../../utils/backend/grabDbSSL"));
|
|
||||||
const connection = (0, serverless_mysql_1.default)({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
database: process.env.DSQL_DB_NAME,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: (0, grabDbSSL_1.default)(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
/**
|
/**
|
||||||
* # Main DB Handler Function
|
* # Main DB Handler Function
|
||||||
*/
|
*/
|
||||||
@ -35,11 +23,6 @@ function dbHandler(...args) {
|
|||||||
var _a;
|
var _a;
|
||||||
((_a = process.env.NODE_ENV) === null || _a === void 0 ? void 0 : _a.match(/dev/)) &&
|
((_a = process.env.NODE_ENV) === null || _a === void 0 ? void 0 : _a.match(/dev/)) &&
|
||||||
fs_1.default.appendFileSync("./.tmp/sqlQuery.sql", args[0] + "\n" + Date() + "\n\n\n", "utf8");
|
fs_1.default.appendFileSync("./.tmp/sqlQuery.sql", args[0] + "\n" + Date() + "\n\n\n", "utf8");
|
||||||
/**
|
|
||||||
* Declare variables
|
|
||||||
*
|
|
||||||
* @description Declare "results" variable
|
|
||||||
*/
|
|
||||||
let results;
|
let results;
|
||||||
/**
|
/**
|
||||||
* Fetch from db
|
* Fetch from db
|
||||||
@ -47,6 +30,7 @@ function dbHandler(...args) {
|
|||||||
* @description Fetch data from db if no cache
|
* @description Fetch data from db if no cache
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
|
const connection = global.DSQL_DB_CONN;
|
||||||
results = yield new Promise((resolve, reject) => {
|
results = yield new Promise((resolve, reject) => {
|
||||||
connection.query(...args, (error, result, fields) => {
|
connection.query(...args, (error, result, fields) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
type Param = {
|
type Param = {
|
||||||
queryString: string;
|
queryString: string;
|
||||||
database: string;
|
|
||||||
local?: boolean;
|
local?: boolean;
|
||||||
tableSchema?: import("../../types").DSQL_TableSchemaType | null;
|
tableSchema?: import("../../types").DSQL_TableSchemaType | null;
|
||||||
queryValuesArray?: string[];
|
queryValuesArray?: string[];
|
||||||
@ -8,5 +7,5 @@ type Param = {
|
|||||||
/**
|
/**
|
||||||
* # Full Access Db Handler
|
* # Full Access Db Handler
|
||||||
*/
|
*/
|
||||||
export default function fullAccessDbHandler({ queryString, database, tableSchema, queryValuesArray, local, }: Param): Promise<any>;
|
export default function fullAccessDbHandler({ queryString, tableSchema, queryValuesArray, local, }: Param): Promise<any>;
|
||||||
export {};
|
export {};
|
||||||
|
@ -22,7 +22,7 @@ const serverError_1 = __importDefault(require("./serverError"));
|
|||||||
* # Full Access Db Handler
|
* # Full Access Db Handler
|
||||||
*/
|
*/
|
||||||
function fullAccessDbHandler(_a) {
|
function fullAccessDbHandler(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ queryString, database, tableSchema, queryValuesArray, local, }) {
|
return __awaiter(this, arguments, void 0, function* ({ queryString, tableSchema, queryValuesArray, local, }) {
|
||||||
/**
|
/**
|
||||||
* Declare variables
|
* Declare variables
|
||||||
*
|
*
|
||||||
@ -40,7 +40,6 @@ function fullAccessDbHandler(_a) {
|
|||||||
? yield (0, LOCAL_DB_HANDLER_1.default)(queryString, queryValuesArray)
|
? yield (0, LOCAL_DB_HANDLER_1.default)(queryString, queryValuesArray)
|
||||||
: yield (0, DSQL_USER_DB_HANDLER_1.default)({
|
: yield (0, DSQL_USER_DB_HANDLER_1.default)({
|
||||||
paradigm: "Full Access",
|
paradigm: "Full Access",
|
||||||
database,
|
|
||||||
queryString,
|
queryString,
|
||||||
queryValues: queryValuesArray,
|
queryValues: queryValuesArray,
|
||||||
});
|
});
|
||||||
|
@ -15,7 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||||||
exports.default = noDatabaseDbHandler;
|
exports.default = noDatabaseDbHandler;
|
||||||
const fs_1 = __importDefault(require("fs"));
|
const fs_1 = __importDefault(require("fs"));
|
||||||
const serverError_1 = __importDefault(require("./serverError"));
|
const serverError_1 = __importDefault(require("./serverError"));
|
||||||
const NO_DB_HANDLER_1 = __importDefault(require("../../../package-shared/utils/backend/global-db/NO_DB_HANDLER"));
|
const NO_DB_HANDLER_1 = __importDefault(require("@/package-shared/utils/backend/global-db/NO_DB_HANDLER"));
|
||||||
/**
|
/**
|
||||||
* # No Database DB Handler
|
* # No Database DB Handler
|
||||||
*/
|
*/
|
||||||
|
@ -33,7 +33,6 @@ function varDatabaseDbHandler(_a) {
|
|||||||
: (database === null || database === void 0 ? void 0 : database.match(/^datasquirel$/))
|
: (database === null || database === void 0 ? void 0 : database.match(/^datasquirel$/))
|
||||||
? true
|
? true
|
||||||
: false;
|
: false;
|
||||||
/** @type {any} */
|
|
||||||
const FINAL_DB_HANDLER = useLocal
|
const FINAL_DB_HANDLER = useLocal
|
||||||
? LOCAL_DB_HANDLER_1.default
|
? LOCAL_DB_HANDLER_1.default
|
||||||
: isMaster
|
: isMaster
|
||||||
@ -54,7 +53,6 @@ function varDatabaseDbHandler(_a) {
|
|||||||
? yield FINAL_DB_HANDLER(queryString, queryValuesArray)
|
? yield FINAL_DB_HANDLER(queryString, queryValuesArray)
|
||||||
: yield FINAL_DB_HANDLER({
|
: yield FINAL_DB_HANDLER({
|
||||||
paradigm: "Full Access",
|
paradigm: "Full Access",
|
||||||
database,
|
|
||||||
queryString,
|
queryString,
|
||||||
queryValues: queryValuesArray,
|
queryValues: queryValuesArray,
|
||||||
});
|
});
|
||||||
@ -64,12 +62,12 @@ function varDatabaseDbHandler(_a) {
|
|||||||
? yield FINAL_DB_HANDLER(queryString)
|
? yield FINAL_DB_HANDLER(queryString)
|
||||||
: yield FINAL_DB_HANDLER({
|
: yield FINAL_DB_HANDLER({
|
||||||
paradigm: "Full Access",
|
paradigm: "Full Access",
|
||||||
database,
|
|
||||||
queryString,
|
queryString,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
|
console.log(`varDatabaseDbHandler Error: ${error.message}`);
|
||||||
(0, serverError_1.default)({
|
(0, serverError_1.default)({
|
||||||
component: "varDatabaseDbHandler/lines-29-32",
|
component: "varDatabaseDbHandler/lines-29-32",
|
||||||
message: error.message,
|
message: error.message,
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
type Param = {
|
type Param = {
|
||||||
queryString: string;
|
queryString: string;
|
||||||
database: string;
|
|
||||||
queryValuesArray?: string[];
|
queryValuesArray?: string[];
|
||||||
tableSchema?: import("../../types").DSQL_TableSchemaType;
|
tableSchema?: import("../../types").DSQL_TableSchemaType;
|
||||||
useLocal?: boolean;
|
useLocal?: boolean;
|
||||||
@ -9,5 +8,5 @@ type Param = {
|
|||||||
* # Read Only Db Handler with Varaibles
|
* # Read Only Db Handler with Varaibles
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export default function varReadOnlyDatabaseDbHandler({ queryString, database, queryValuesArray, tableSchema, useLocal, }: Param): Promise<any>;
|
export default function varReadOnlyDatabaseDbHandler({ queryString, queryValuesArray, tableSchema, useLocal, }: Param): Promise<any>;
|
||||||
export {};
|
export {};
|
||||||
|
@ -23,7 +23,7 @@ const LOCAL_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-d
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
function varReadOnlyDatabaseDbHandler(_a) {
|
function varReadOnlyDatabaseDbHandler(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ queryString, database, queryValuesArray, tableSchema, useLocal, }) {
|
return __awaiter(this, arguments, void 0, function* ({ queryString, queryValuesArray, tableSchema, useLocal, }) {
|
||||||
/**
|
/**
|
||||||
* Declare variables
|
* Declare variables
|
||||||
*
|
*
|
||||||
@ -40,7 +40,6 @@ function varReadOnlyDatabaseDbHandler(_a) {
|
|||||||
? yield (0, LOCAL_DB_HANDLER_1.default)(queryString, queryValuesArray)
|
? yield (0, LOCAL_DB_HANDLER_1.default)(queryString, queryValuesArray)
|
||||||
: yield (0, DSQL_USER_DB_HANDLER_1.default)({
|
: yield (0, DSQL_USER_DB_HANDLER_1.default)({
|
||||||
paradigm: "Read Only",
|
paradigm: "Read Only",
|
||||||
database,
|
|
||||||
queryString,
|
queryString,
|
||||||
queryValues: queryValuesArray,
|
queryValues: queryValuesArray,
|
||||||
});
|
});
|
||||||
|
21
dist/package-shared/shell/checkDb.js
vendored
21
dist/package-shared/shell/checkDb.js
vendored
@ -8,23 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
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 });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
require("dotenv").config({ path: "./../.env" });
|
require("dotenv").config({ path: "./../.env" });
|
||||||
const serverless_mysql_1 = __importDefault(require("serverless-mysql"));
|
|
||||||
const grabDbSSL_1 = __importDefault(require("../utils/backend/grabDbSSL"));
|
|
||||||
const connection = (0, serverless_mysql_1.default)({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
database: process.env.DSQL_DB_NAME,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: (0, grabDbSSL_1.default)(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
/**
|
/**
|
||||||
* # Main DB Handler Function
|
* # Main DB Handler Function
|
||||||
* @async
|
* @async
|
||||||
@ -37,11 +22,7 @@ const connection = (0, serverless_mysql_1.default)({
|
|||||||
* @returns {Promise<object|null>}
|
* @returns {Promise<object|null>}
|
||||||
*/
|
*/
|
||||||
(() => __awaiter(void 0, void 0, void 0, function* () {
|
(() => __awaiter(void 0, void 0, void 0, function* () {
|
||||||
/**
|
const connection = global.DSQL_DB_CONN;
|
||||||
* Switch Database
|
|
||||||
*
|
|
||||||
* @description If a database is provided, switch to it
|
|
||||||
*/
|
|
||||||
try {
|
try {
|
||||||
const result = yield connection.query("SELECT id,first_name,last_name FROM users LIMIT 3");
|
const result = yield connection.query("SELECT id,first_name,last_name FROM users LIMIT 3");
|
||||||
console.log("Connection Query Success =>", result);
|
console.log("Connection Query Success =>", result);
|
||||||
|
@ -5,6 +5,7 @@ type Param = {
|
|||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* # Create database from Schema Function
|
* # 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<void>;
|
||||||
export {};
|
export {};
|
||||||
|
51
dist/package-shared/shell/createDbFromSchema.js
vendored
51
dist/package-shared/shell/createDbFromSchema.js
vendored
@ -21,20 +21,13 @@ const createTable_1 = __importDefault(require("./utils/createTable"));
|
|||||||
const updateTable_1 = __importDefault(require("./utils/updateTable"));
|
const updateTable_1 = __importDefault(require("./utils/updateTable"));
|
||||||
const dbHandler_1 = __importDefault(require("./utils/dbHandler"));
|
const dbHandler_1 = __importDefault(require("./utils/dbHandler"));
|
||||||
const ejson_1 = __importDefault(require("../utils/ejson"));
|
const ejson_1 = __importDefault(require("../utils/ejson"));
|
||||||
const util_1 = require("util");
|
|
||||||
/**
|
/**
|
||||||
* # Create database from Schema Function
|
* # Create database from Schema Function
|
||||||
|
* @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database
|
||||||
*/
|
*/
|
||||||
function createDbFromSchema(_a) {
|
function createDbFromSchema(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ userId, targetDatabase, dbSchemaData, }) {
|
return __awaiter(this, arguments, void 0, function* ({ userId, targetDatabase, dbSchemaData, }) {
|
||||||
var _b, _c;
|
var _b, _c;
|
||||||
console.log("///////////////////////////////");
|
|
||||||
console.log("///////////////////////////////");
|
|
||||||
console.log("Rebuilding Database ...");
|
|
||||||
console.log("process.env.DSQL_DB_HOST", process.env.DSQL_DB_HOST);
|
|
||||||
console.log("process.env.DSQL_DB_USERNAME", process.env.DSQL_DB_USERNAME);
|
|
||||||
console.log("process.env.DSQL_DB_PASSWORD", process.env.DSQL_DB_PASSWORD);
|
|
||||||
console.log("process.env.DSQL_DB_NAME", process.env.DSQL_DB_NAME);
|
|
||||||
const schemaPath = userId
|
const schemaPath = userId
|
||||||
? path_1.default.join(String(process.env.DSQL_USER_DB_SCHEMA_PATH), `/user-${userId}/main.json`)
|
? path_1.default.join(String(process.env.DSQL_USER_DB_SCHEMA_PATH), `/user-${userId}/main.json`)
|
||||||
: path_1.default.resolve(__dirname, "../../jsonData/dbSchemas/main.json");
|
: path_1.default.resolve(__dirname, "../../jsonData/dbSchemas/main.json");
|
||||||
@ -46,20 +39,14 @@ function createDbFromSchema(_a) {
|
|||||||
}
|
}
|
||||||
// await createDatabasesFromSchema(dbSchema);
|
// await createDatabasesFromSchema(dbSchema);
|
||||||
for (let i = 0; i < dbSchema.length; i++) {
|
for (let i = 0; i < dbSchema.length; i++) {
|
||||||
/** @type {import("../types").DSQL_DatabaseSchemaType} */
|
|
||||||
const database = dbSchema[i];
|
const database = dbSchema[i];
|
||||||
const { dbFullName, tables, dbName, dbSlug, childrenDatabases } = database;
|
const { dbFullName, tables, dbName, dbSlug, childrenDatabases } = database;
|
||||||
if (targetDatabase && dbFullName != targetDatabase) {
|
if (targetDatabase && dbFullName != targetDatabase) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
console.log("Checking Database ...");
|
|
||||||
/** @type {any} */
|
/** @type {any} */
|
||||||
const dbCheck = yield (0, noDatabaseDbHandler_1.default)(`SELECT SCHEMA_NAME AS dbFullName FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '${dbFullName}'`);
|
const dbCheck = yield (0, noDatabaseDbHandler_1.default)(`SELECT SCHEMA_NAME AS dbFullName FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '${dbFullName}'`);
|
||||||
console.log("DB Checked Success!");
|
if (!((_b = dbCheck === null || dbCheck === void 0 ? void 0 : dbCheck[0]) === null || _b === void 0 ? void 0 : _b.dbFullName)) {
|
||||||
if (dbCheck && ((_b = dbCheck[0]) === null || _b === void 0 ? void 0 : _b.dbFullName)) {
|
|
||||||
// Database Exists
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const newDatabase = yield (0, noDatabaseDbHandler_1.default)(`CREATE DATABASE IF NOT EXISTS \`${dbFullName}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`);
|
const newDatabase = yield (0, noDatabaseDbHandler_1.default)(`CREATE DATABASE IF NOT EXISTS \`${dbFullName}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -86,28 +73,24 @@ function createDbFromSchema(_a) {
|
|||||||
if (oldTableFilteredArray && oldTableFilteredArray[0]) {
|
if (oldTableFilteredArray && oldTableFilteredArray[0]) {
|
||||||
console.log("Renaming Table");
|
console.log("Renaming Table");
|
||||||
yield (0, varDatabaseDbHandler_1.default)({
|
yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `RENAME TABLE \`${oldTableFilteredArray[0].tableNameOld}\` TO \`${oldTableFilteredArray[0].tableName}\``,
|
queryString: `RENAME TABLE \`${dbFullName}\`.\`${oldTableFilteredArray[0].tableNameOld}\` TO \`${oldTableFilteredArray[0].tableName}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
console.log(`Dropping Table from ${dbFullName}`);
|
console.log(`Dropping Table from ${dbFullName}`);
|
||||||
yield (0, varDatabaseDbHandler_1.default)({
|
yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `DROP TABLE \`${TABLE_NAME}\``,
|
queryString: `DROP TABLE \`${dbFullName}\`.\`${TABLE_NAME}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
const deleteTableEntry = yield (0, dbHandler_1.default)({
|
const deleteTableEntry = yield (0, dbHandler_1.default)({
|
||||||
query: `DELETE FROM user_database_tables WHERE user_id = ? AND db_slug = ? AND table_slug = ?`,
|
query: `DELETE FROM datasquirel.user_database_tables WHERE user_id = ? AND db_slug = ? AND table_slug = ?`,
|
||||||
values: [userId, dbSlug, TABLE_NAME],
|
values: [userId, dbSlug, TABLE_NAME],
|
||||||
database: "datasquirel",
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const recordedDbEntryArray = userId
|
const recordedDbEntryArray = userId
|
||||||
? yield (0, varDatabaseDbHandler_1.default)({
|
? yield (0, varDatabaseDbHandler_1.default)({
|
||||||
database: "datasquirel",
|
queryString: `SELECT * FROM datasquirel.user_databases WHERE db_full_name = ?`,
|
||||||
queryString: `SELECT * FROM user_databases WHERE db_full_name = ?`,
|
|
||||||
queryValuesArray: [dbFullName],
|
queryValuesArray: [dbFullName],
|
||||||
})
|
})
|
||||||
: undefined;
|
: undefined;
|
||||||
@ -134,7 +117,6 @@ function createDbFromSchema(_a) {
|
|||||||
TABLE_NAME = ?
|
TABLE_NAME = ?
|
||||||
) AS tableExists`,
|
) AS tableExists`,
|
||||||
queryValuesArray: [dbFullName, table.tableName],
|
queryValuesArray: [dbFullName, table.tableName],
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
if (tableCheck && ((_c = tableCheck[0]) === null || _c === void 0 ? void 0 : _c.tableExists) > 0) {
|
if (tableCheck && ((_c = tableCheck[0]) === null || _c === void 0 ? void 0 : _c.tableExists) > 0) {
|
||||||
@ -183,7 +165,6 @@ function createDbFromSchema(_a) {
|
|||||||
tableName: tableName,
|
tableName: tableName,
|
||||||
tableInfoArray: fields,
|
tableInfoArray: fields,
|
||||||
dbFullName: dbFullName,
|
dbFullName: dbFullName,
|
||||||
dbSchema,
|
|
||||||
tableSchema: table,
|
tableSchema: table,
|
||||||
recordedDbEntry,
|
recordedDbEntry,
|
||||||
});
|
});
|
||||||
@ -208,8 +189,7 @@ function createDbFromSchema(_a) {
|
|||||||
* @description All indexes from MYSQL db
|
* @description All indexes from MYSQL db
|
||||||
*/ // @ts-ignore
|
*/ // @ts-ignore
|
||||||
const allExistingIndexes = yield (0, varDatabaseDbHandler_1.default)({
|
const allExistingIndexes = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `SHOW INDEXES FROM \`${tableName}\``,
|
queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
const existingKeyInDb = allExistingIndexes.filter((indexObject) => indexObject.Key_name === alias);
|
const existingKeyInDb = allExistingIndexes.filter((indexObject) => indexObject.Key_name === alias);
|
||||||
if (!existingKeyInDb[0])
|
if (!existingKeyInDb[0])
|
||||||
@ -223,8 +203,7 @@ function createDbFromSchema(_a) {
|
|||||||
yield (0, varDatabaseDbHandler_1.default)({
|
yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `CREATE${(indexType === null || indexType === void 0 ? void 0 : indexType.match(/fullText/i))
|
queryString: `CREATE${(indexType === null || indexType === void 0 ? void 0 : indexType.match(/fullText/i))
|
||||||
? " FULLTEXT"
|
? " FULLTEXT"
|
||||||
: ""} INDEX \`${alias}\` ON ${tableName}(${indexTableFields === null || indexTableFields === void 0 ? void 0 : indexTableFields.map((nm) => nm.value).map((nm) => `\`${nm}\``).join(",")}) COMMENT 'schema_index'`,
|
: ""} INDEX \`${alias}\` ON \`${dbFullName}\`.\`${tableName}\`(${indexTableFields === null || indexTableFields === void 0 ? void 0 : indexTableFields.map((nm) => nm.value).map((nm) => `\`${nm}\``).join(",")}) COMMENT 'schema_index'`,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -246,19 +225,5 @@ function createDbFromSchema(_a) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log("Database Successfully Rebuilt!");
|
|
||||||
console.log("///////////////////////////////");
|
|
||||||
console.log("///////////////////////////////");
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
const { values } = (0, util_1.parseArgs)({
|
|
||||||
args: process.argv,
|
|
||||||
options: {
|
|
||||||
exec: { type: "boolean" },
|
|
||||||
},
|
|
||||||
strict: true,
|
|
||||||
allowPositionals: true,
|
|
||||||
});
|
|
||||||
if (values.exec) {
|
|
||||||
createDbFromSchema({});
|
|
||||||
}
|
|
||||||
|
5
dist/package-shared/shell/encodingUpdate.js
vendored
5
dist/package-shared/shell/encodingUpdate.js
vendored
@ -34,15 +34,12 @@ const varDatabaseDbHandler_1 = __importDefault(require("../functions/backend/var
|
|||||||
const { id, user_id, db_id, db_full_name, table_name, table_slug, table_description, } = table;
|
const { id, user_id, db_id, db_full_name, table_name, table_slug, table_description, } = table;
|
||||||
const tableInfo = yield (0, varDatabaseDbHandler_1.default)({
|
const tableInfo = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`,
|
queryString: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`,
|
||||||
database: db_full_name,
|
|
||||||
});
|
});
|
||||||
const updateDbCharset = yield (0, varDatabaseDbHandler_1.default)({
|
const updateDbCharset = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `ALTER DATABASE ${db_full_name} CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;`,
|
queryString: `ALTER DATABASE ${db_full_name} CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;`,
|
||||||
database: db_full_name,
|
|
||||||
});
|
});
|
||||||
const updateEncoding = yield (0, varDatabaseDbHandler_1.default)({
|
const updateEncoding = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `ALTER TABLE \`${table_slug}\` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`,
|
queryString: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`,
|
||||||
database: db_full_name,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
process.exit();
|
process.exit();
|
||||||
|
@ -4,9 +4,9 @@ export interface GrantType {
|
|||||||
privileges: string[];
|
privileges: string[];
|
||||||
}
|
}
|
||||||
type Param = {
|
type Param = {
|
||||||
username: string;
|
username?: string;
|
||||||
host: string;
|
host?: string;
|
||||||
grants: GrantType[];
|
grants?: GrantType[];
|
||||||
userId: string;
|
userId: string;
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
type Param = {
|
type Param = {
|
||||||
userId?: number | string;
|
userId?: number | string;
|
||||||
mariadbUserHost?: string;
|
mariadbUserHost?: string;
|
||||||
mariadbUser?: string;
|
mariadbUsername?: string;
|
||||||
sqlUserID?: string | number;
|
sqlUserID?: string | number;
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* # Refresh Mariadb User Grants
|
* # Refresh Mariadb User Grants
|
||||||
*/
|
*/
|
||||||
export default function refreshUsersAndGrants({ userId, mariadbUserHost, mariadbUser, sqlUserID, }: Param): Promise<void>;
|
export default function refreshUsersAndGrants({ userId, mariadbUserHost, mariadbUsername, sqlUserID, }: Param): Promise<void>;
|
||||||
export {};
|
export {};
|
||||||
|
@ -26,26 +26,25 @@ const defaultMariadbUserHost = process.env.DSQL_DB_HOST || "127.0.0.1";
|
|||||||
* # Refresh Mariadb User Grants
|
* # Refresh Mariadb User Grants
|
||||||
*/
|
*/
|
||||||
function refreshUsersAndGrants(_a) {
|
function refreshUsersAndGrants(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ userId, mariadbUserHost, mariadbUser, sqlUserID, }) {
|
return __awaiter(this, arguments, void 0, function* ({ userId, mariadbUserHost, mariadbUsername, sqlUserID, }) {
|
||||||
var _b, _c, _d, _e;
|
var _b, _c, _d, _e;
|
||||||
/**
|
const mariadbUsers = (yield (0, dbHandler_1.default)({
|
||||||
* @description Users
|
query: `SELECT * FROM mariadb_users`,
|
||||||
* @type {*[] | null}
|
}));
|
||||||
*/ // @ts-ignore
|
if (!(mariadbUsers === null || mariadbUsers === void 0 ? void 0 : mariadbUsers[0])) {
|
||||||
const users = yield (0, dbHandler_1.default)({
|
return;
|
||||||
query: `SELECT * FROM users`,
|
|
||||||
});
|
|
||||||
if (!(users === null || users === void 0 ? void 0 : users[0])) {
|
|
||||||
process.exit();
|
|
||||||
}
|
}
|
||||||
for (let i = 0; i < users.length; i++) {
|
const isRootUser = userId
|
||||||
const user = users[i];
|
? userId == Number(process.env.DSQL_SU_USER_ID)
|
||||||
if (!user)
|
: false;
|
||||||
|
for (let i = 0; i < mariadbUsers.length; i++) {
|
||||||
|
const mariadbUser = mariadbUsers[i];
|
||||||
|
if (!mariadbUser)
|
||||||
continue;
|
continue;
|
||||||
if (userId && user.id != userId)
|
if (userId && mariadbUser.user_id != userId)
|
||||||
continue;
|
continue;
|
||||||
try {
|
try {
|
||||||
const { mariadb_user, mariadb_host, mariadb_pass, id } = user;
|
const { mariadb_user, mariadb_host, mariadb_pass, user_id } = mariadbUser;
|
||||||
const existingUser = yield (0, noDatabaseDbHandler_1.default)(`SELECT * FROM mysql.user WHERE User = '${mariadb_user}' AND Host = '${mariadb_host}'`);
|
const existingUser = yield (0, noDatabaseDbHandler_1.default)(`SELECT * FROM mysql.user WHERE User = '${mariadb_user}' AND Host = '${mariadb_host}'`);
|
||||||
const existingMariaDBUserArray = userId && sqlUserID
|
const existingMariaDBUserArray = userId && sqlUserID
|
||||||
? yield (0, dbHandler_1.default)({
|
? yield (0, dbHandler_1.default)({
|
||||||
@ -53,9 +52,6 @@ function refreshUsersAndGrants(_a) {
|
|||||||
values: [sqlUserID, userId],
|
values: [sqlUserID, userId],
|
||||||
})
|
})
|
||||||
: null;
|
: null;
|
||||||
/**
|
|
||||||
* @type {import("../../types").MYSQL_mariadb_users_table_def | undefined}
|
|
||||||
*/
|
|
||||||
const activeMariadbUserObject = Array.isArray(existingMariaDBUserArray)
|
const activeMariadbUserObject = Array.isArray(existingMariaDBUserArray)
|
||||||
? existingMariaDBUserArray === null || existingMariaDBUserArray === void 0 ? void 0 : existingMariaDBUserArray[0]
|
? existingMariaDBUserArray === null || existingMariaDBUserArray === void 0 ? void 0 : existingMariaDBUserArray[0]
|
||||||
: undefined;
|
: undefined;
|
||||||
@ -66,7 +62,9 @@ function refreshUsersAndGrants(_a) {
|
|||||||
: false;
|
: false;
|
||||||
const isUserExisting = Boolean((_c = existingUser === null || existingUser === void 0 ? void 0 : existingUser[0]) === null || _c === void 0 ? void 0 : _c.User);
|
const isUserExisting = Boolean((_c = existingUser === null || existingUser === void 0 ? void 0 : existingUser[0]) === null || _c === void 0 ? void 0 : _c.User);
|
||||||
const isThisPrimaryHost = Boolean(mariadbUserHost == defaultMariadbUserHost);
|
const isThisPrimaryHost = Boolean(mariadbUserHost == defaultMariadbUserHost);
|
||||||
const dslUsername = `dsql_user_${id}`;
|
const dslUsername = isRootUser
|
||||||
|
? mariadbUsername
|
||||||
|
: `dsql_user_${user_id}`;
|
||||||
const dsqlPassword = (activeMariadbUserObject === null || activeMariadbUserObject === void 0 ? void 0 : activeMariadbUserObject.password)
|
const dsqlPassword = (activeMariadbUserObject === null || activeMariadbUserObject === void 0 ? void 0 : activeMariadbUserObject.password)
|
||||||
? activeMariadbUserObject.password
|
? activeMariadbUserObject.password
|
||||||
: isUserExisting
|
: isUserExisting
|
||||||
@ -91,20 +89,23 @@ function refreshUsersAndGrants(_a) {
|
|||||||
!sqlUserID &&
|
!sqlUserID &&
|
||||||
!isPrimary &&
|
!isPrimary &&
|
||||||
!mariadbUserHost &&
|
!mariadbUserHost &&
|
||||||
!mariadbUser) {
|
!mariadbUsername) {
|
||||||
const createNewUser = yield (0, noDatabaseDbHandler_1.default)(`CREATE USER IF NOT EXISTS '${dslUsername}'@'${defaultMariadbUserHost}' IDENTIFIED BY '${dsqlPassword}'`);
|
const createNewUser = yield (0, noDatabaseDbHandler_1.default)(`CREATE USER IF NOT EXISTS '${dslUsername}'@'${defaultMariadbUserHost}' IDENTIFIED BY '${dsqlPassword}'`);
|
||||||
console.log("createNewUser", createNewUser);
|
console.log("createNewUser", createNewUser);
|
||||||
console.log(`User ${user.id}: ${user.first_name} ${user.last_name} SQL credentials successfully updated.`);
|
console.log(`User ${mariadbUser.id}: ${mariadbUser.first_name} ${mariadbUser.last_name} SQL credentials successfully updated.`);
|
||||||
const updateUser = yield (0, dbHandler_1.default)({
|
const updateUser = yield (0, dbHandler_1.default)({
|
||||||
query: `UPDATE users SET mariadb_user = ?, mariadb_host = ?, mariadb_pass = ? WHERE id = ?`,
|
query: `UPDATE users SET mariadb_user = ?, mariadb_host = ?, mariadb_pass = ? WHERE id = ?`,
|
||||||
values: [
|
values: [
|
||||||
dslUsername,
|
dslUsername,
|
||||||
defaultMariadbUserHost,
|
defaultMariadbUserHost,
|
||||||
encryptedPassword,
|
encryptedPassword,
|
||||||
user.id,
|
mariadbUser.id,
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
else if (!isUserExisting && mariadbUserHost) {
|
||||||
|
const createNewUser = yield (0, noDatabaseDbHandler_1.default)(`CREATE USER IF NOT EXISTS '${dslUsername}'@'${mariadbUserHost}' IDENTIFIED BY '${dsqlPassword}'`);
|
||||||
|
}
|
||||||
if (isPrimary) {
|
if (isPrimary) {
|
||||||
const finalHost = mariadbUserHost
|
const finalHost = mariadbUserHost
|
||||||
? mariadbUserHost
|
? mariadbUserHost
|
||||||
@ -115,7 +116,7 @@ function refreshUsersAndGrants(_a) {
|
|||||||
dslUsername,
|
dslUsername,
|
||||||
finalHost,
|
finalHost,
|
||||||
encryptedPassword,
|
encryptedPassword,
|
||||||
user.id,
|
mariadbUser.id,
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -127,7 +128,7 @@ function refreshUsersAndGrants(_a) {
|
|||||||
*/
|
*/
|
||||||
const existingMariadbPrimaryUser = yield (0, dbHandler_1.default)({
|
const existingMariadbPrimaryUser = yield (0, dbHandler_1.default)({
|
||||||
query: `SELECT * FROM mariadb_users WHERE user_id = ? AND \`primary\` = 1`,
|
query: `SELECT * FROM mariadb_users WHERE user_id = ? AND \`primary\` = 1`,
|
||||||
values: [id],
|
values: [user_id],
|
||||||
});
|
});
|
||||||
const isPrimaryUserExisting = Boolean(Array.isArray(existingMariadbPrimaryUser) &&
|
const isPrimaryUserExisting = Boolean(Array.isArray(existingMariadbPrimaryUser) &&
|
||||||
((_d = existingMariadbPrimaryUser === null || existingMariadbPrimaryUser === void 0 ? void 0 : existingMariadbPrimaryUser[0]) === null || _d === void 0 ? void 0 : _d.user_id));
|
((_d = existingMariadbPrimaryUser === null || existingMariadbPrimaryUser === void 0 ? void 0 : existingMariadbPrimaryUser[0]) === null || _d === void 0 ? void 0 : _d.user_id));
|
||||||
@ -142,7 +143,7 @@ function refreshUsersAndGrants(_a) {
|
|||||||
const insertPrimaryMariadbUser = yield (0, dbHandler_1.default)({
|
const insertPrimaryMariadbUser = yield (0, dbHandler_1.default)({
|
||||||
query: `INSERT INTO mariadb_users (user_id, username, password, \`primary\`, grants) VALUES (?, ?, ?, ?, ?)`,
|
query: `INSERT INTO mariadb_users (user_id, username, password, \`primary\`, grants) VALUES (?, ?, ?, ?, ?)`,
|
||||||
values: [
|
values: [
|
||||||
id,
|
user_id,
|
||||||
dslUsername,
|
dslUsername,
|
||||||
encryptedPassword,
|
encryptedPassword,
|
||||||
"1",
|
"1",
|
||||||
@ -153,36 +154,37 @@ function refreshUsersAndGrants(_a) {
|
|||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
const existingExtraMariadbUsers = yield (0, dbHandler_1.default)({
|
const existingExtraMariadbUsers = yield (0, dbHandler_1.default)({
|
||||||
query: `SELECT * FROM mariadb_users WHERE user_id = ? AND \`primary\` != '1'`,
|
query: `SELECT * FROM mariadb_users WHERE user_id = ? AND \`primary\` != '1'`,
|
||||||
values: [id],
|
values: [user_id],
|
||||||
});
|
});
|
||||||
if (Array.isArray(existingExtraMariadbUsers)) {
|
if (Array.isArray(existingExtraMariadbUsers)) {
|
||||||
for (let i = 0; i < existingExtraMariadbUsers.length; i++) {
|
for (let i = 0; i < existingExtraMariadbUsers.length; i++) {
|
||||||
const mariadbUser = existingExtraMariadbUsers[i];
|
const _mariadbUser = existingExtraMariadbUsers[i];
|
||||||
const { user_id, username, host, password, primary, grants, } = mariadbUser;
|
if (_mariadbUser &&
|
||||||
if (mariadbUser && username != mariadbUser)
|
_mariadbUser.username != mariadbUsername)
|
||||||
continue;
|
continue;
|
||||||
if (mariadbUserHost && host != mariadbUserHost)
|
if (mariadbUserHost && _mariadbUser.host != mariadbUserHost)
|
||||||
continue;
|
continue;
|
||||||
const decrptedPassword = (0, decrypt_1.default)({
|
const decrptedPassword = (0, decrypt_1.default)({
|
||||||
encryptedString: password,
|
encryptedString: _mariadbUser.password || "",
|
||||||
encryptionKey: process.env.DSQL_ENCRYPTION_PASSWORD,
|
encryptionKey: process.env.DSQL_ENCRYPTION_PASSWORD,
|
||||||
encryptionSalt: process.env.DSQL_ENCRYPTION_SALT,
|
encryptionSalt: process.env.DSQL_ENCRYPTION_SALT,
|
||||||
});
|
});
|
||||||
const existingExtraMariadbUser = yield (0, noDatabaseDbHandler_1.default)(`SELECT * FROM mysql.user WHERE User = '${username}' AND Host = '${host}'`);
|
const existingExtraMariadbUser = yield (0, noDatabaseDbHandler_1.default)(`SELECT * FROM mysql.user WHERE User='${_mariadbUser.username}' AND Host='${_mariadbUser.host}'`);
|
||||||
const isExtraMariadbUserExisting = Boolean((_e = existingExtraMariadbUser === null || existingExtraMariadbUser === void 0 ? void 0 : existingExtraMariadbUser[0]) === null || _e === void 0 ? void 0 : _e.User);
|
const isExtraMariadbUserExisting = Boolean((_e = existingExtraMariadbUser === null || existingExtraMariadbUser === void 0 ? void 0 : existingExtraMariadbUser[0]) === null || _e === void 0 ? void 0 : _e.User);
|
||||||
if (!isExtraMariadbUserExisting) {
|
if (!isExtraMariadbUserExisting) {
|
||||||
yield (0, noDatabaseDbHandler_1.default)(`CREATE USER IF NOT EXISTS '${username}'@'${host}' IDENTIFIED BY '${decrptedPassword}'`);
|
yield (0, noDatabaseDbHandler_1.default)(`CREATE USER IF NOT EXISTS '${_mariadbUser.username}'@'${_mariadbUser.host}' IDENTIFIED BY '${decrptedPassword}'`);
|
||||||
}
|
}
|
||||||
const isGrantHandled = yield (0, handleGrants_1.default)({
|
const isGrantHandled = yield (0, handleGrants_1.default)({
|
||||||
username,
|
username: _mariadbUser.username,
|
||||||
host,
|
host: _mariadbUser.host,
|
||||||
grants: grants && typeof grants == "string"
|
grants: _mariadbUser.grants &&
|
||||||
? JSON.parse(grants)
|
typeof _mariadbUser.grants == "string"
|
||||||
|
? JSON.parse(_mariadbUser.grants)
|
||||||
: [],
|
: [],
|
||||||
userId: String(userId),
|
userId: String(userId),
|
||||||
});
|
});
|
||||||
if (!isGrantHandled) {
|
if (!isGrantHandled) {
|
||||||
console.log(`Error in handling grants for user ${username}@${host}`);
|
console.log(`Error in handling grants for user ${_mariadbUser.username}@${_mariadbUser.host}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ function recoverMainJsonFromDb() {
|
|||||||
};
|
};
|
||||||
const tableFields = yield (0, varDatabaseDbHandler_1.default)({
|
const tableFields = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
database: db_full_name,
|
database: db_full_name,
|
||||||
queryString: `SHOW COLUMNS FROM ${table_slug}`,
|
queryString: `SHOW COLUMNS FROM ${db_full_name}.${table_slug}`,
|
||||||
});
|
});
|
||||||
for (let k = 0; k < tableFields.length; k++) {
|
for (let k = 0; k < tableFields.length; k++) {
|
||||||
const { Field, Type, Null, Default, Key } = tableFields[k];
|
const { Field, Type, Null, Default, Key } = tableFields[k];
|
||||||
|
2
dist/package-shared/shell/tailwindWatch.js
vendored
2
dist/package-shared/shell/tailwindWatch.js
vendored
@ -20,7 +20,7 @@ const destinationFile = process.argv.indexOf("--dst") >= 0
|
|||||||
/** ****************************************************************************** */
|
/** ****************************************************************************** */
|
||||||
console.log("Running Tailwind CSS compiler ...");
|
console.log("Running Tailwind CSS compiler ...");
|
||||||
fs_1.default.watch("./../", (curr, prev) => {
|
fs_1.default.watch("./../", (curr, prev) => {
|
||||||
(0, child_process_1.exec)(`npx tailwindcss -i ./tailwind/main.css -o ./styles/tailwind.css`, (error, stdout, stderr) => {
|
(0, child_process_1.exec)(`bunx tailwindcss -i ./tailwind/main.css -o ./styles/tailwind.css`, (error, stdout, stderr) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
console.log("ERROR =>", error.message);
|
console.log("ERROR =>", error.message);
|
||||||
return;
|
return;
|
||||||
|
@ -28,15 +28,12 @@ const varDatabaseDbHandler_1 = __importDefault(require("../functions/backend/var
|
|||||||
const { id, user_id, db_id, db_full_name, table_name, table_slug, table_description, } = table;
|
const { id, user_id, db_id, db_full_name, table_name, table_slug, table_description, } = table;
|
||||||
const tableInfo = yield (0, varDatabaseDbHandler_1.default)({
|
const tableInfo = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`,
|
queryString: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`,
|
||||||
database: db_full_name,
|
|
||||||
});
|
});
|
||||||
const updateCreationDateTimestamp = yield (0, varDatabaseDbHandler_1.default)({
|
const updateCreationDateTimestamp = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `ALTER TABLE \`${table_slug}\` MODIFY COLUMN date_created_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP`,
|
queryString: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` MODIFY COLUMN date_created_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP`,
|
||||||
database: db_full_name,
|
|
||||||
});
|
});
|
||||||
const updateDateTimestamp = yield (0, varDatabaseDbHandler_1.default)({
|
const updateDateTimestamp = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `ALTER TABLE \`${table_slug}\` MODIFY COLUMN date_updated_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`,
|
queryString: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` MODIFY COLUMN date_updated_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`,
|
||||||
database: db_full_name,
|
|
||||||
});
|
});
|
||||||
console.log("Date Updated Column updated");
|
console.log("Date Updated Column updated");
|
||||||
}
|
}
|
||||||
|
@ -28,8 +28,7 @@ const DB_HANDLER_1 = __importDefault(require("../utils/backend/global-db/DB_HAND
|
|||||||
* @description Grab Schema
|
* @description Grab Schema
|
||||||
*/
|
*/
|
||||||
(0, varDatabaseDbHandler_1.default)({
|
(0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `SELECT DISTINCT db_id FROM user_database_tables`,
|
queryString: `SELECT DISTINCT db_id FROM datasquirel.user_database_tables`,
|
||||||
database: "datasquirel",
|
|
||||||
}).then((tables) => __awaiter(void 0, void 0, void 0, function* () {
|
}).then((tables) => __awaiter(void 0, void 0, void 0, function* () {
|
||||||
// console.log(tables);
|
// console.log(tables);
|
||||||
// process.exit();
|
// process.exit();
|
||||||
|
21
dist/package-shared/shell/updateSSLUsers.js
vendored
21
dist/package-shared/shell/updateSSLUsers.js
vendored
@ -8,23 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
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 });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
require("dotenv").config({ path: "./../.env" });
|
require("dotenv").config({ path: "./../.env" });
|
||||||
const grabDbSSL_1 = __importDefault(require("../utils/backend/grabDbSSL"));
|
|
||||||
const serverless_mysql_1 = __importDefault(require("serverless-mysql"));
|
|
||||||
const connection = (0, serverless_mysql_1.default)({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
database: process.env.DSQL_DB_NAME,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: (0, grabDbSSL_1.default)(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
/**
|
/**
|
||||||
* # Main DB Handler Function
|
* # Main DB Handler Function
|
||||||
* @async
|
* @async
|
||||||
@ -38,11 +23,7 @@ const connection = (0, serverless_mysql_1.default)({
|
|||||||
*/
|
*/
|
||||||
(() => __awaiter(void 0, void 0, void 0, function* () {
|
(() => __awaiter(void 0, void 0, void 0, function* () {
|
||||||
var _a;
|
var _a;
|
||||||
/**
|
const connection = global.DSQL_DB_CONN;
|
||||||
* Switch Database
|
|
||||||
*
|
|
||||||
* @description If a database is provided, switch to it
|
|
||||||
*/
|
|
||||||
try {
|
try {
|
||||||
const result = yield connection.query("SELECT user,host,ssl_type FROM mysql.user");
|
const result = yield connection.query("SELECT user,host,ssl_type FROM mysql.user");
|
||||||
const parsedResults = JSON.parse(JSON.stringify(result));
|
const parsedResults = JSON.parse(JSON.stringify(result));
|
||||||
|
11
dist/package-shared/shell/utils/createTable.d.ts
vendored
11
dist/package-shared/shell/utils/createTable.d.ts
vendored
@ -1,20 +1,13 @@
|
|||||||
import { DSQL_DatabaseSchemaType, DSQL_TableSchemaType } from "../../types";
|
import { DSQL_TableSchemaType } from "../../types";
|
||||||
type Param = {
|
type Param = {
|
||||||
dbFullName: string;
|
dbFullName: string;
|
||||||
tableName: string;
|
tableName: string;
|
||||||
tableInfoArray: any[];
|
tableInfoArray: any[];
|
||||||
dbSchema?: DSQL_DatabaseSchemaType[];
|
|
||||||
tableSchema?: DSQL_TableSchemaType;
|
tableSchema?: DSQL_TableSchemaType;
|
||||||
recordedDbEntry?: any;
|
recordedDbEntry?: any;
|
||||||
clone?: boolean;
|
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* # Create Table Functions
|
* # Create Table Functions
|
||||||
*/
|
*/
|
||||||
export default function createTable({ dbFullName, tableName, tableInfoArray, dbSchema, clone, tableSchema, recordedDbEntry, }: Param): Promise<any>;
|
export default function createTable({ dbFullName, tableName, tableInfoArray, tableSchema, recordedDbEntry, }: Param): Promise<any>;
|
||||||
export {};
|
export {};
|
||||||
/** ****************************************************************************** */
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
|
22
dist/package-shared/shell/utils/createTable.js
vendored
22
dist/package-shared/shell/utils/createTable.js
vendored
@ -21,7 +21,7 @@ const dbHandler_1 = __importDefault(require("./dbHandler"));
|
|||||||
* # Create Table Functions
|
* # Create Table Functions
|
||||||
*/
|
*/
|
||||||
function createTable(_a) {
|
function createTable(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ dbFullName, tableName, tableInfoArray, dbSchema, clone, tableSchema, recordedDbEntry, }) {
|
return __awaiter(this, arguments, void 0, function* ({ dbFullName, tableName, tableInfoArray, tableSchema, recordedDbEntry, }) {
|
||||||
/**
|
/**
|
||||||
* Format tableInfoArray
|
* Format tableInfoArray
|
||||||
*
|
*
|
||||||
@ -34,7 +34,7 @@ function createTable(_a) {
|
|||||||
* @description Grab Schema
|
* @description Grab Schema
|
||||||
*/
|
*/
|
||||||
const createTableQueryArray = [];
|
const createTableQueryArray = [];
|
||||||
createTableQueryArray.push(`CREATE TABLE IF NOT EXISTS \`${tableName}\` (`);
|
createTableQueryArray.push(`CREATE TABLE IF NOT EXISTS \`${dbFullName}\`.\`${tableName}\` (`);
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
@ -43,15 +43,14 @@ function createTable(_a) {
|
|||||||
throw new Error("Recorded Db entry not found!");
|
throw new Error("Recorded Db entry not found!");
|
||||||
}
|
}
|
||||||
const existingTable = yield (0, varDatabaseDbHandler_1.default)({
|
const existingTable = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
database: "datasquirel",
|
queryString: `SELECT * FROM datasquirel.user_database_tables WHERE db_id = ? AND table_slug = ?`,
|
||||||
queryString: `SELECT * FROM user_database_tables WHERE db_id = ? AND table_slug = ?`,
|
|
||||||
queryValuesArray: [recordedDbEntry.id, tableSchema === null || tableSchema === void 0 ? void 0 : tableSchema.tableName],
|
queryValuesArray: [recordedDbEntry.id, tableSchema === null || tableSchema === void 0 ? void 0 : tableSchema.tableName],
|
||||||
});
|
});
|
||||||
/** @type {import("../../types").MYSQL_user_database_tables_table_def} */
|
/** @type {import("../../types").MYSQL_user_database_tables_table_def} */
|
||||||
const table = existingTable === null || existingTable === void 0 ? void 0 : existingTable[0];
|
const table = existingTable === null || existingTable === void 0 ? void 0 : existingTable[0];
|
||||||
if (!(table === null || table === void 0 ? void 0 : table.id)) {
|
if (!(table === null || table === void 0 ? void 0 : table.id)) {
|
||||||
const newTableEntry = yield (0, dbHandler_1.default)({
|
const newTableEntry = yield (0, dbHandler_1.default)({
|
||||||
query: `INSERT INTO user_database_tables SET ?`,
|
query: `INSERT INTO datasquirel.user_database_tables SET ?`,
|
||||||
values: {
|
values: {
|
||||||
user_id: recordedDbEntry.user_id,
|
user_id: recordedDbEntry.user_id,
|
||||||
db_id: recordedDbEntry.id,
|
db_id: recordedDbEntry.id,
|
||||||
@ -66,7 +65,6 @@ function createTable(_a) {
|
|||||||
date_updated: Date(),
|
date_updated: Date(),
|
||||||
date_updated_code: Date.now(),
|
date_updated_code: Date.now(),
|
||||||
},
|
},
|
||||||
database: "datasquirel",
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -100,9 +98,6 @@ function createTable(_a) {
|
|||||||
createTableQueryArray.push(" " + fieldEntryText + comma);
|
createTableQueryArray.push(" " + fieldEntryText + comma);
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
}
|
}
|
||||||
////////////////////////////////////////
|
|
||||||
////////////////////////////////////////
|
|
||||||
////////////////////////////////////////
|
|
||||||
if (foreignKeys[0]) {
|
if (foreignKeys[0]) {
|
||||||
foreignKeys.forEach((foreighKey, index, array) => {
|
foreignKeys.forEach((foreighKey, index, array) => {
|
||||||
var _a, _b, _c, _d, _e;
|
var _a, _b, _c, _d, _e;
|
||||||
@ -126,16 +121,7 @@ function createTable(_a) {
|
|||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
const newTable = yield (0, varDatabaseDbHandler_1.default)({
|
const newTable = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: createTableQuery,
|
queryString: createTableQuery,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
return newTable;
|
return newTable;
|
||||||
////////////////////////////////////////
|
|
||||||
////////////////////////////////////////
|
|
||||||
////////////////////////////////////////
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/** ****************************************************************************** */
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
type Param = {
|
type Param = {
|
||||||
query: string;
|
query: string;
|
||||||
values?: string[] | object;
|
values?: string[] | object;
|
||||||
database?: string;
|
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* # Main DB Handler Function
|
* # Main DB Handler Function
|
||||||
|
* @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database
|
||||||
*/
|
*/
|
||||||
export default function dbHandler({ query, values, database, }: Param): Promise<any[] | object | null>;
|
export default function dbHandler({ query, values, }: Param): Promise<any[] | object | null>;
|
||||||
export {};
|
export {};
|
||||||
|
58
dist/package-shared/shell/utils/dbHandler.js
vendored
58
dist/package-shared/shell/utils/dbHandler.js
vendored
@ -15,56 +15,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||||||
exports.default = dbHandler;
|
exports.default = dbHandler;
|
||||||
const fs_1 = __importDefault(require("fs"));
|
const fs_1 = __importDefault(require("fs"));
|
||||||
const path_1 = __importDefault(require("path"));
|
const path_1 = __importDefault(require("path"));
|
||||||
const serverless_mysql_1 = __importDefault(require("serverless-mysql"));
|
|
||||||
const grabDbSSL_1 = __importDefault(require("../../utils/backend/grabDbSSL"));
|
|
||||||
let connection = (0, serverless_mysql_1.default)({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
database: process.env.DSQL_DB_NAME,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: (0, grabDbSSL_1.default)(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
/**
|
/**
|
||||||
* # Main DB Handler Function
|
* # Main DB Handler Function
|
||||||
|
* @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database
|
||||||
*/
|
*/
|
||||||
function dbHandler(_a) {
|
function dbHandler(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ query, values, database, }) {
|
return __awaiter(this, arguments, void 0, function* ({ query, values, }) {
|
||||||
/**
|
let connection = global.DSQL_DB_CONN;
|
||||||
* Switch Database
|
|
||||||
*
|
|
||||||
* @description If a database is provided, switch to it
|
|
||||||
*/
|
|
||||||
let isDbCorrect = true;
|
|
||||||
if (database) {
|
|
||||||
connection = (0, serverless_mysql_1.default)({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
database: database,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: (0, grabDbSSL_1.default)(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (!isDbCorrect) {
|
|
||||||
console.log("Shell Db Handler ERROR in switching Database! Operation Failed!");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Declare variables
|
|
||||||
*
|
|
||||||
* @description Declare "results" variable
|
|
||||||
*/
|
|
||||||
let results;
|
let results;
|
||||||
/**
|
|
||||||
* Fetch from db
|
|
||||||
*
|
|
||||||
* @description Fetch data from db if no cache
|
|
||||||
*/
|
|
||||||
try {
|
try {
|
||||||
if (query && values) {
|
if (query && values) {
|
||||||
results = yield connection.query(query, values);
|
results = yield connection.query(query, values);
|
||||||
@ -72,8 +30,6 @@ function dbHandler(_a) {
|
|||||||
else {
|
else {
|
||||||
results = yield connection.query(query);
|
results = yield connection.query(query);
|
||||||
}
|
}
|
||||||
/** ********************* Clean up */
|
|
||||||
yield connection.end();
|
|
||||||
}
|
}
|
||||||
catch ( /** @type {any} */error) {
|
catch ( /** @type {any} */error) {
|
||||||
if (process.env.FIRST_RUN) {
|
if (process.env.FIRST_RUN) {
|
||||||
@ -85,11 +41,9 @@ function dbHandler(_a) {
|
|||||||
fs_1.default.appendFileSync(path_1.default.resolve(__dirname, "../.tmp/dbErrorLogs.txt"), JSON.stringify(error, null, 4) + "\n" + Date() + "\n\n\n", "utf8");
|
fs_1.default.appendFileSync(path_1.default.resolve(__dirname, "../.tmp/dbErrorLogs.txt"), JSON.stringify(error, null, 4) + "\n" + Date() + "\n\n\n", "utf8");
|
||||||
results = null;
|
results = null;
|
||||||
}
|
}
|
||||||
/**
|
finally {
|
||||||
* Return results
|
yield (connection === null || connection === void 0 ? void 0 : connection.end());
|
||||||
*
|
}
|
||||||
* @description Return results add to cache if "req" param is passed
|
|
||||||
*/
|
|
||||||
if (results) {
|
if (results) {
|
||||||
return JSON.parse(JSON.stringify(results));
|
return JSON.parse(JSON.stringify(results));
|
||||||
}
|
}
|
||||||
|
36
dist/package-shared/shell/utils/updateTable.js
vendored
36
dist/package-shared/shell/utils/updateTable.js
vendored
@ -55,22 +55,21 @@ function updateTable(_a) {
|
|||||||
/**
|
/**
|
||||||
* @description Push the query initial value
|
* @description Push the query initial value
|
||||||
*/
|
*/
|
||||||
updateTableQueryArray.push(`ALTER TABLE \`${tableName}\``);
|
updateTableQueryArray.push(`ALTER TABLE \`${dbFullName}\`.\`${tableName}\``);
|
||||||
if (childDb) {
|
if (childDb) {
|
||||||
try {
|
try {
|
||||||
if (!recordedDbEntry) {
|
if (!recordedDbEntry) {
|
||||||
throw new Error("Recorded Db entry not found!");
|
throw new Error("Recorded Db entry not found!");
|
||||||
}
|
}
|
||||||
const existingTable = yield (0, varDatabaseDbHandler_1.default)({
|
const existingTable = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
database: "datasquirel",
|
queryString: `SELECT * FROM datasquirel.user_database_tables WHERE db_id = ? AND table_slug = ?`,
|
||||||
queryString: `SELECT * FROM user_database_tables WHERE db_id = ? AND table_slug = ?`,
|
|
||||||
queryValuesArray: [recordedDbEntry.id, tableName],
|
queryValuesArray: [recordedDbEntry.id, tableName],
|
||||||
});
|
});
|
||||||
/** @type {import("../../types").MYSQL_user_database_tables_table_def} */
|
/** @type {import("../../types").MYSQL_user_database_tables_table_def} */
|
||||||
const table = existingTable === null || existingTable === void 0 ? void 0 : existingTable[0];
|
const table = existingTable === null || existingTable === void 0 ? void 0 : existingTable[0];
|
||||||
if (!(table === null || table === void 0 ? void 0 : table.id)) {
|
if (!(table === null || table === void 0 ? void 0 : table.id)) {
|
||||||
const newTableEntry = yield (0, dbHandler_1.default)({
|
const newTableEntry = yield (0, dbHandler_1.default)({
|
||||||
query: `INSERT INTO user_database_tables SET ?`,
|
query: `INSERT INTO datasquirel.user_database_tables SET ?`,
|
||||||
values: {
|
values: {
|
||||||
user_id: recordedDbEntry.user_id,
|
user_id: recordedDbEntry.user_id,
|
||||||
db_id: recordedDbEntry.id,
|
db_id: recordedDbEntry.id,
|
||||||
@ -85,7 +84,6 @@ function updateTable(_a) {
|
|||||||
date_updated: Date(),
|
date_updated: Date(),
|
||||||
date_updated_code: Date.now(),
|
date_updated_code: Date.now(),
|
||||||
},
|
},
|
||||||
database: "datasquirel",
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -96,16 +94,14 @@ function updateTable(_a) {
|
|||||||
* @description All indexes from MYSQL db
|
* @description All indexes from MYSQL db
|
||||||
*/ // @ts-ignore
|
*/ // @ts-ignore
|
||||||
const allExistingIndexes = yield (0, varDatabaseDbHandler_1.default)({
|
const allExistingIndexes = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `SHOW INDEXES FROM \`${tableName}\``,
|
queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
/**
|
/**
|
||||||
* @type {import("../../types").DSQL_MYSQL_SHOW_COLUMNS_Type[]}
|
* @type {import("../../types").DSQL_MYSQL_SHOW_COLUMNS_Type[]}
|
||||||
* @description All columns from MYSQL db
|
* @description All columns from MYSQL db
|
||||||
*/ // @ts-ignore
|
*/ // @ts-ignore
|
||||||
const allExistingColumns = yield (0, varDatabaseDbHandler_1.default)({
|
const allExistingColumns = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `SHOW COLUMNS FROM \`${tableName}\``,
|
queryString: `SHOW COLUMNS FROM \`${dbFullName}\`.\`${tableName}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
/**
|
/**
|
||||||
@ -133,8 +129,7 @@ function updateTable(_a) {
|
|||||||
existingEntry[0].fieldName) {
|
existingEntry[0].fieldName) {
|
||||||
updatedColumnsArray.push(existingEntry[0].fieldName);
|
updatedColumnsArray.push(existingEntry[0].fieldName);
|
||||||
const renameColumn = yield (0, varDatabaseDbHandler_1.default)({
|
const renameColumn = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `ALTER TABLE ${tableName} RENAME COLUMN \`${existingEntry[0].originName}\` TO \`${existingEntry[0].fieldName}\``,
|
queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` RENAME COLUMN \`${existingEntry[0].originName}\` TO \`${existingEntry[0].fieldName}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
console.log(`Column Renamed from "${existingEntry[0].originName}" to "${existingEntry[0].fieldName}"`);
|
console.log(`Column Renamed from "${existingEntry[0].originName}" to "${existingEntry[0].fieldName}"`);
|
||||||
/**
|
/**
|
||||||
@ -167,8 +162,7 @@ function updateTable(_a) {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
yield (0, varDatabaseDbHandler_1.default)({
|
yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `ALTER TABLE ${tableName} DROP COLUMN \`${Field}\``,
|
queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP COLUMN \`${Field}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -196,8 +190,7 @@ function updateTable(_a) {
|
|||||||
* present in the datasquirel DB schema
|
* present in the datasquirel DB schema
|
||||||
*/
|
*/
|
||||||
yield (0, varDatabaseDbHandler_1.default)({
|
yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `ALTER TABLE ${tableName} DROP INDEX \`${Key_name}\``,
|
queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${Key_name}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -227,8 +220,7 @@ function updateTable(_a) {
|
|||||||
* doesn't exist in MYSQL db
|
* doesn't exist in MYSQL db
|
||||||
*/
|
*/
|
||||||
yield (0, varDatabaseDbHandler_1.default)({
|
yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `CREATE${(indexType === null || indexType === void 0 ? void 0 : indexType.match(/fullText/i)) ? " FULLTEXT" : ""} INDEX \`${alias}\` ON ${tableName}(${indexTableFields === null || indexTableFields === void 0 ? void 0 : indexTableFields.map((nm) => nm.value).map((nm) => `\`${nm}\``).join(",")}) COMMENT 'schema_index'`,
|
queryString: `CREATE${(indexType === null || indexType === void 0 ? void 0 : indexType.match(/fullText/i)) ? " FULLTEXT" : ""} INDEX \`${alias}\` ON \`${dbFullName}\`.\`${tableName}\`(${indexTableFields === null || indexTableFields === void 0 ? void 0 : indexTableFields.map((nm) => nm.value).map((nm) => `\`${nm}\``).join(",")}) COMMENT 'schema_index'`,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -242,10 +234,9 @@ function updateTable(_a) {
|
|||||||
/**
|
/**
|
||||||
* @description All MSQL Foreign Keys
|
* @description All MSQL Foreign Keys
|
||||||
* @type {import("../../types").DSQL_MYSQL_FOREIGN_KEYS_Type[] | null}
|
* @type {import("../../types").DSQL_MYSQL_FOREIGN_KEYS_Type[] | null}
|
||||||
*/ // @ts-ignore
|
*/
|
||||||
const allForeignKeys = yield (0, varDatabaseDbHandler_1.default)({
|
const allForeignKeys = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = '${dbFullName}' AND TABLE_NAME='${tableName}' AND CONSTRAINT_TYPE='FOREIGN KEY'`,
|
queryString: `SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = '${dbFullName}' AND TABLE_NAME='${tableName}' AND CONSTRAINT_TYPE='FOREIGN KEY'`,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
if (allForeignKeys) {
|
if (allForeignKeys) {
|
||||||
for (let c = 0; c < allForeignKeys.length; c++) {
|
for (let c = 0; c < allForeignKeys.length; c++) {
|
||||||
@ -260,8 +251,7 @@ function updateTable(_a) {
|
|||||||
* Foreign keys
|
* Foreign keys
|
||||||
*/
|
*/
|
||||||
const dropForeignKey = yield (0, varDatabaseDbHandler_1.default)({
|
const dropForeignKey = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: `ALTER TABLE ${tableName} DROP FOREIGN KEY \`${CONSTRAINT_NAME}\``,
|
queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP FOREIGN KEY \`${CONSTRAINT_NAME}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -370,9 +360,8 @@ function updateTable(_a) {
|
|||||||
const { destinationTableName, destinationTableColumnName, cascadeDelete, cascadeUpdate, foreignKeyName, } = foreignKey;
|
const { destinationTableName, destinationTableColumnName, cascadeDelete, cascadeUpdate, foreignKeyName, } = foreignKey;
|
||||||
const foreinKeyText = `ADD CONSTRAINT \`${foreignKeyName}\` FOREIGN KEY (\`${fieldName}\`) REFERENCES \`${destinationTableName}\`(\`${destinationTableColumnName}\`)${cascadeDelete ? " ON DELETE CASCADE" : ""}${cascadeUpdate ? " ON UPDATE CASCADE" : ""}`;
|
const foreinKeyText = `ADD CONSTRAINT \`${foreignKeyName}\` FOREIGN KEY (\`${fieldName}\`) REFERENCES \`${destinationTableName}\`(\`${destinationTableColumnName}\`)${cascadeDelete ? " ON DELETE CASCADE" : ""}${cascadeUpdate ? " ON UPDATE CASCADE" : ""}`;
|
||||||
// const foreinKeyText = `ADD CONSTRAINT \`${foreignKeyName}\` FOREIGN KEY (${fieldName}) REFERENCES ${destinationTableName}(${destinationTableColumnName})${cascadeDelete ? " ON DELETE CASCADE" : ""}${cascadeUpdate ? " ON UPDATE CASCADE" : ""}` + ",";
|
// const foreinKeyText = `ADD CONSTRAINT \`${foreignKeyName}\` FOREIGN KEY (${fieldName}) REFERENCES ${destinationTableName}(${destinationTableColumnName})${cascadeDelete ? " ON DELETE CASCADE" : ""}${cascadeUpdate ? " ON UPDATE CASCADE" : ""}` + ",";
|
||||||
const finalQueryString = `ALTER TABLE \`${tableName}\` ${foreinKeyText}`;
|
const finalQueryString = `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` ${foreinKeyText}`;
|
||||||
const addForeignKey = yield (0, varDatabaseDbHandler_1.default)({
|
const addForeignKey = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
database: dbFullName,
|
|
||||||
queryString: finalQueryString,
|
queryString: finalQueryString,
|
||||||
});
|
});
|
||||||
if (!(addForeignKey === null || addForeignKey === void 0 ? void 0 : addForeignKey.serverStatus)) {
|
if (!(addForeignKey === null || addForeignKey === void 0 ? void 0 : addForeignKey.serverStatus)) {
|
||||||
@ -397,7 +386,6 @@ function updateTable(_a) {
|
|||||||
if (updateTableQueryArray.length > 1) {
|
if (updateTableQueryArray.length > 1) {
|
||||||
const updateTable = yield (0, varDatabaseDbHandler_1.default)({
|
const updateTable = yield (0, varDatabaseDbHandler_1.default)({
|
||||||
queryString: updateTableQuery,
|
queryString: updateTableQuery,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
return updateTable;
|
return updateTable;
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,9 @@
|
|||||||
import { DSQL_TableSchemaType } from "../../types";
|
|
||||||
type Param = {
|
type Param = {
|
||||||
queryString: string;
|
queryString: string;
|
||||||
queryValuesArray?: string[];
|
queryValuesArray?: string[];
|
||||||
database?: string;
|
|
||||||
tableSchema?: DSQL_TableSchemaType;
|
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* # DB handler for specific database
|
* # DB handler for specific database
|
||||||
*/
|
*/
|
||||||
export default function varDatabaseDbHandler({ queryString, queryValuesArray, database, tableSchema, }: Param): Promise<any>;
|
export default function varDatabaseDbHandler({ queryString, queryValuesArray, }: Param): Promise<any>;
|
||||||
export {};
|
export {};
|
||||||
|
@ -18,7 +18,7 @@ const dbHandler_1 = __importDefault(require("./dbHandler"));
|
|||||||
* # DB handler for specific database
|
* # DB handler for specific database
|
||||||
*/
|
*/
|
||||||
function varDatabaseDbHandler(_a) {
|
function varDatabaseDbHandler(_a) {
|
||||||
return __awaiter(this, arguments, void 0, function* ({ queryString, queryValuesArray, database, tableSchema, }) {
|
return __awaiter(this, arguments, void 0, function* ({ queryString, queryValuesArray, }) {
|
||||||
/**
|
/**
|
||||||
* Declare variables
|
* Declare variables
|
||||||
*
|
*
|
||||||
@ -38,13 +38,11 @@ function varDatabaseDbHandler(_a) {
|
|||||||
results = yield (0, dbHandler_1.default)({
|
results = yield (0, dbHandler_1.default)({
|
||||||
query: queryString,
|
query: queryString,
|
||||||
values: queryValuesArray,
|
values: queryValuesArray,
|
||||||
database,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
results = yield (0, dbHandler_1.default)({
|
results = yield (0, dbHandler_1.default)({
|
||||||
query: queryString,
|
query: queryString,
|
||||||
database,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
|
3
dist/package-shared/types/index.d.ts
vendored
3
dist/package-shared/types/index.d.ts
vendored
@ -903,10 +903,7 @@ export type FetchApiOptions = RequestInit & {
|
|||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
export type AuthCsrfHeaderName = "x-csrf-auth";
|
|
||||||
type FetchHeader = HeadersInit & {
|
type FetchHeader = HeadersInit & {
|
||||||
[key in AuthCsrfHeaderName]?: string | null;
|
|
||||||
} & {
|
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
};
|
};
|
||||||
export type FetchApiReturn = {
|
export type FetchApiReturn = {
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* # DSQL user read-only DB handler
|
* # DSQL user read-only DB handler
|
||||||
|
* @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database
|
||||||
*/
|
*/
|
||||||
export default function DB_HANDLER(...args: any[]): Promise<any>;
|
export default function DB_HANDLER(...args: any[]): Promise<any>;
|
||||||
|
@ -8,34 +8,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
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 });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.default = DB_HANDLER;
|
exports.default = DB_HANDLER;
|
||||||
const serverless_mysql_1 = __importDefault(require("serverless-mysql"));
|
|
||||||
const MASTER = (0, serverless_mysql_1.default)({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
database: process.env.DSQL_DB_NAME,
|
|
||||||
port: process.env.DSQL_DB_PORT
|
|
||||||
? Number(process.env.DSQL_DB_PORT)
|
|
||||||
: undefined,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
// ssl: grabDbSSL(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
/**
|
/**
|
||||||
* # DSQL user read-only DB handler
|
* # DSQL user read-only DB handler
|
||||||
|
* @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database
|
||||||
*/
|
*/
|
||||||
function DB_HANDLER(...args) {
|
function DB_HANDLER(...args) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const CONNECTION = global.DSQL_DB_CONN;
|
||||||
try {
|
try {
|
||||||
const results = yield MASTER.query(...args);
|
if (!CONNECTION)
|
||||||
/** ********************* Clean up */
|
throw new Error("No Connection provided to DB_HANDLER function!");
|
||||||
yield MASTER.end();
|
const results = yield CONNECTION.query(...args);
|
||||||
return JSON.parse(JSON.stringify(results));
|
return JSON.parse(JSON.stringify(results));
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
@ -45,5 +30,8 @@ function DB_HANDLER(...args) {
|
|||||||
error: error.message,
|
error: error.message,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
finally {
|
||||||
|
yield (CONNECTION === null || CONNECTION === void 0 ? void 0 : CONNECTION.end());
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,10 @@
|
|||||||
type Param = {
|
type Param = {
|
||||||
paradigm: "Full Access" | "FA" | "Read Only";
|
paradigm: "Full Access" | "FA" | "Read Only";
|
||||||
database: string;
|
|
||||||
queryString: string;
|
queryString: string;
|
||||||
queryValues?: string[];
|
queryValues?: string[];
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* # DSQL user read-only DB handler
|
* # DSQL user read-only DB handler
|
||||||
*/
|
*/
|
||||||
export default function DSQL_USER_DB_HANDLER({ paradigm, database, queryString, queryValues, }: Param): Promise<unknown> | {
|
export default function DSQL_USER_DB_HANDLER({ paradigm, queryString, queryValues, }: Param): Promise<any>;
|
||||||
success: boolean;
|
|
||||||
error: any;
|
|
||||||
};
|
|
||||||
export {};
|
export {};
|
||||||
|
@ -1,102 +1,119 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
// @ts-check
|
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) {
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.default = DSQL_USER_DB_HANDLER;
|
exports.default = DSQL_USER_DB_HANDLER;
|
||||||
const fs_1 = __importDefault(require("fs"));
|
const conn_db_handler_1 = __importDefault(require("../../db/conn-db-handler"));
|
||||||
const serverless_mysql_1 = __importDefault(require("serverless-mysql"));
|
|
||||||
const grabDbSSL_1 = __importDefault(require("../grabDbSSL"));
|
|
||||||
let DSQL_USER = (0, serverless_mysql_1.default)({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_READ_ONLY_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_READ_ONLY_PASSWORD,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: (0, grabDbSSL_1.default)(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
/**
|
/**
|
||||||
* # DSQL user read-only DB handler
|
* # DSQL user read-only DB handler
|
||||||
*/
|
*/
|
||||||
function DSQL_USER_DB_HANDLER({ paradigm, database, queryString, queryValues, }) {
|
function DSQL_USER_DB_HANDLER(_a) {
|
||||||
try {
|
return __awaiter(this, arguments, void 0, function* ({ paradigm, queryString, queryValues, }) {
|
||||||
return new Promise((resolve, reject) => {
|
try {
|
||||||
const fullAccess = (paradigm === null || paradigm === void 0 ? void 0 : paradigm.match(/full.access|^fa$/i))
|
switch (paradigm) {
|
||||||
? true
|
case "Read Only":
|
||||||
: false;
|
return yield (0, conn_db_handler_1.default)(global.DSQL_READ_ONLY_DB_CONN, queryString, queryValues);
|
||||||
try {
|
case "Full Access":
|
||||||
if (fullAccess) {
|
return yield (0, conn_db_handler_1.default)(global.DSQL_FULL_ACCESS_DB_CONN, queryString, queryValues);
|
||||||
DSQL_USER = (0, serverless_mysql_1.default)({
|
case "FA":
|
||||||
config: {
|
return yield (0, conn_db_handler_1.default)(global.DSQL_FULL_ACCESS_DB_CONN, queryString, queryValues);
|
||||||
host: process.env.DSQL_DB_HOST,
|
default:
|
||||||
user: process.env.DSQL_DB_FULL_ACCESS_USERNAME,
|
return null;
|
||||||
password: process.env.DSQL_DB_FULL_ACCESS_PASSWORD,
|
|
||||||
database: database,
|
|
||||||
ssl: (0, grabDbSSL_1.default)(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
DSQL_USER = (0, serverless_mysql_1.default)({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_READ_ONLY_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_READ_ONLY_PASSWORD,
|
|
||||||
database: database,
|
|
||||||
ssl: (0, grabDbSSL_1.default)(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* ### Run query Function
|
|
||||||
* @param {any} results
|
|
||||||
*/
|
|
||||||
function runQuery(results) {
|
|
||||||
DSQL_USER.end();
|
|
||||||
resolve(JSON.parse(JSON.stringify(results)));
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* ### Query Error
|
|
||||||
* @param {any} err
|
|
||||||
*/
|
|
||||||
function queryError(err) {
|
|
||||||
DSQL_USER.end();
|
|
||||||
resolve({
|
|
||||||
error: err.message,
|
|
||||||
queryStringGenerated: queryString,
|
|
||||||
queryValuesGenerated: queryValues,
|
|
||||||
sql: err.sql,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (queryValues &&
|
|
||||||
Array.isArray(queryValues) &&
|
|
||||||
queryValues[0]) {
|
|
||||||
DSQL_USER.query(queryString, queryValues)
|
|
||||||
.then(runQuery)
|
|
||||||
.catch(queryError);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
DSQL_USER.query(queryString)
|
|
||||||
.then(runQuery)
|
|
||||||
.catch(queryError);
|
|
||||||
}
|
|
||||||
////////////////////////////////////////
|
|
||||||
}
|
}
|
||||||
catch ( /** @type {any} */error) {
|
}
|
||||||
////////////////////////////////////////
|
catch (error) {
|
||||||
fs_1.default.appendFileSync("./.tmp/dbErrorLogs.txt", error.message + "\n" + Date() + "\n\n\n", "utf8");
|
console.log(`DSQL_USER_DB_HANDLER Error: ${error.message}`);
|
||||||
resolve({
|
return null;
|
||||||
error: error.message,
|
}
|
||||||
});
|
// try {
|
||||||
}
|
// return new Promise((resolve, reject) => {
|
||||||
});
|
// const fullAccess = paradigm?.match(/full.access|^fa$/i)
|
||||||
}
|
// ? true
|
||||||
catch ( /** @type {any} */error) {
|
// : false;
|
||||||
return {
|
// try {
|
||||||
success: false,
|
// if (fullAccess) {
|
||||||
error: error.message,
|
// DSQL_USER = mysql({
|
||||||
};
|
// config: {
|
||||||
}
|
// host: process.env.DSQL_DB_HOST,
|
||||||
|
// user: process.env.DSQL_DB_FULL_ACCESS_USERNAME,
|
||||||
|
// password: process.env.DSQL_DB_FULL_ACCESS_PASSWORD,
|
||||||
|
// database: database,
|
||||||
|
// ssl: grabDbSSL(),
|
||||||
|
// },
|
||||||
|
// });
|
||||||
|
// } else {
|
||||||
|
// DSQL_USER = mysql({
|
||||||
|
// config: {
|
||||||
|
// host: process.env.DSQL_DB_HOST,
|
||||||
|
// user: process.env.DSQL_DB_READ_ONLY_USERNAME,
|
||||||
|
// password: process.env.DSQL_DB_READ_ONLY_PASSWORD,
|
||||||
|
// database: database,
|
||||||
|
// ssl: grabDbSSL(),
|
||||||
|
// },
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// /**
|
||||||
|
// * ### Run query Function
|
||||||
|
// * @param {any} results
|
||||||
|
// */
|
||||||
|
// function runQuery(results: any) {
|
||||||
|
// DSQL_USER.end();
|
||||||
|
// resolve(JSON.parse(JSON.stringify(results)));
|
||||||
|
// }
|
||||||
|
// /**
|
||||||
|
// * ### Query Error
|
||||||
|
// * @param {any} err
|
||||||
|
// */
|
||||||
|
// function queryError(err: any) {
|
||||||
|
// DSQL_USER.end();
|
||||||
|
// resolve({
|
||||||
|
// error: err.message,
|
||||||
|
// queryStringGenerated: queryString,
|
||||||
|
// queryValuesGenerated: queryValues,
|
||||||
|
// sql: err.sql,
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// if (
|
||||||
|
// queryValues &&
|
||||||
|
// Array.isArray(queryValues) &&
|
||||||
|
// queryValues[0]
|
||||||
|
// ) {
|
||||||
|
// DSQL_USER.query(queryString, queryValues)
|
||||||
|
// .then(runQuery)
|
||||||
|
// .catch(queryError);
|
||||||
|
// } else {
|
||||||
|
// DSQL_USER.query(queryString)
|
||||||
|
// .then(runQuery)
|
||||||
|
// .catch(queryError);
|
||||||
|
// }
|
||||||
|
// ////////////////////////////////////////
|
||||||
|
// } catch (/** @type {any} */ error: any) {
|
||||||
|
// ////////////////////////////////////////
|
||||||
|
// fs.appendFileSync(
|
||||||
|
// "./.tmp/dbErrorLogs.txt",
|
||||||
|
// error.message + "\n" + Date() + "\n\n\n",
|
||||||
|
// "utf8"
|
||||||
|
// );
|
||||||
|
// resolve({
|
||||||
|
// error: error.message,
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// } catch (/** @type {any} */ error: any) {
|
||||||
|
// return {
|
||||||
|
// success: false,
|
||||||
|
// error: error.message,
|
||||||
|
// };
|
||||||
|
// }
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,24 +1,11 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.default = NO_DB_HANDLER;
|
exports.default = NO_DB_HANDLER;
|
||||||
const serverless_mysql_1 = __importDefault(require("serverless-mysql"));
|
|
||||||
const grabDbSSL_1 = __importDefault(require("../grabDbSSL"));
|
|
||||||
let NO_DB = (0, serverless_mysql_1.default)({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: (0, grabDbSSL_1.default)(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
/**
|
/**
|
||||||
* # DSQL user read-only DB handler
|
* # DSQL user read-only DB handler
|
||||||
*/
|
*/
|
||||||
function NO_DB_HANDLER(...args) {
|
function NO_DB_HANDLER(...args) {
|
||||||
|
const NO_DB = global.DSQL_DB_CONN;
|
||||||
try {
|
try {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
NO_DB.query(...args)
|
NO_DB.query(...args)
|
||||||
|
@ -1,25 +1,11 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
// @ts-check
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.default = ROOT_DB_HANDLER;
|
exports.default = ROOT_DB_HANDLER;
|
||||||
const serverless_mysql_1 = __importDefault(require("serverless-mysql"));
|
|
||||||
const grabDbSSL_1 = __importDefault(require("../grabDbSSL"));
|
|
||||||
let NO_DB = (0, serverless_mysql_1.default)({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: (0, grabDbSSL_1.default)(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
/**
|
/**
|
||||||
* # Root DB handler
|
* # Root DB handler
|
||||||
*/
|
*/
|
||||||
function ROOT_DB_HANDLER(...args) {
|
function ROOT_DB_HANDLER(...args) {
|
||||||
|
const NO_DB = global.DSQL_DB_CONN;
|
||||||
try {
|
try {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
NO_DB.query(...args)
|
NO_DB.query(...args)
|
||||||
|
@ -20,5 +20,8 @@ function grabDbSSL() {
|
|||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
ca: fs_1.default.readFileSync(`${SSL_DIR}/ca-cert.pem`),
|
ca: fs_1.default.readFileSync(`${SSL_DIR}/ca-cert.pem`),
|
||||||
|
// key: fs.readFileSync(`${SSL_DIR}/client-key.pem`),
|
||||||
|
// cert: fs.readFileSync(`${SSL_DIR}/client-cert.pem`),
|
||||||
|
rejectUnauthorized: false,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
5
dist/utils/get-schema.js
vendored
5
dist/utils/get-schema.js
vendored
@ -65,9 +65,6 @@ function getSchema(_a) {
|
|||||||
})
|
})
|
||||||
.end();
|
.end();
|
||||||
});
|
});
|
||||||
return {
|
return httpResponse;
|
||||||
success: true,
|
|
||||||
payload: httpResponse,
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import serverError from "../../backend/serverError";
|
import serverError from "../../backend/serverError";
|
||||||
import runQuery from "../../backend/db/runQuery";
|
import runQuery from "../../backend/db/runQuery";
|
||||||
|
import { DSQL_TableSchemaType, GetReturn } from "../../../types";
|
||||||
|
|
||||||
type Param = {
|
type Param = {
|
||||||
query: string;
|
query: string;
|
||||||
@ -31,11 +32,6 @@ export default async function apiGet({
|
|||||||
return { success: false, msg: "Wrong Input." };
|
return { success: false, msg: "Wrong Input." };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Create new user folder and file
|
|
||||||
*
|
|
||||||
* @description Create new user folder and file
|
|
||||||
*/
|
|
||||||
let results;
|
let results;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -49,10 +45,7 @@ export default async function apiGet({
|
|||||||
local: useLocal,
|
local: useLocal,
|
||||||
});
|
});
|
||||||
|
|
||||||
/** @type {import("../../../types").DSQL_TableSchemaType | undefined} */
|
let tableSchema: DSQL_TableSchemaType | undefined;
|
||||||
let tableSchema:
|
|
||||||
| import("../../../types").DSQL_TableSchemaType
|
|
||||||
| undefined;
|
|
||||||
|
|
||||||
if (dbSchema) {
|
if (dbSchema) {
|
||||||
const targetTable = dbSchema.tables.find(
|
const targetTable = dbSchema.tables.find(
|
||||||
@ -77,20 +70,23 @@ export default async function apiGet({
|
|||||||
|
|
||||||
results = result;
|
results = result;
|
||||||
|
|
||||||
/** @type {import("../../../types").GetReturn} */
|
const resObject: GetReturn = {
|
||||||
const resObject: import("../../../types").GetReturn = {
|
|
||||||
success: true,
|
success: true,
|
||||||
payload: results,
|
payload: results,
|
||||||
schema: tableName && tableSchema ? tableSchema : undefined,
|
schema: tableName && tableSchema ? tableSchema : undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
return resObject;
|
return resObject;
|
||||||
} catch (/** @type {any} */ error: any) {
|
} catch (error: any) {
|
||||||
serverError({
|
serverError({
|
||||||
component: "/api/query/get/lines-85-94",
|
component: "/api/query/get/lines-85-94",
|
||||||
message: error.message,
|
message: error.message,
|
||||||
});
|
});
|
||||||
|
|
||||||
return { success: false, payload: null, error: error.message };
|
return {
|
||||||
|
success: false,
|
||||||
|
payload: null,
|
||||||
|
error: error.message,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ export default async function handleSocialDb({
|
|||||||
useLocal,
|
useLocal,
|
||||||
}: HandleSocialDbFunctionParams): Promise<APILoginFunctionReturn> {
|
}: HandleSocialDbFunctionParams): Promise<APILoginFunctionReturn> {
|
||||||
try {
|
try {
|
||||||
const existingSocialIdUserQuery = `SELECT * FROM users WHERE social_id = ? AND social_login='1' AND social_platform = ? `;
|
const existingSocialIdUserQuery = `SELECT * FROM datasquirel.users WHERE social_id = ? AND social_login='1' AND social_platform = ? `;
|
||||||
const existingSocialIdUserValues = [
|
const existingSocialIdUserValues = [
|
||||||
social_id.toString(),
|
social_id.toString(),
|
||||||
social_platform,
|
social_platform,
|
||||||
@ -60,7 +60,7 @@ export default async function handleSocialDb({
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const existingEmailOnlyQuery = `SELECT * FROM users WHERE email='${finalEmail}'`;
|
const existingEmailOnlyQuery = `SELECT * FROM datasquirel.users WHERE email='${finalEmail}'`;
|
||||||
|
|
||||||
let existingEmailOnly = await varDatabaseDbHandler({
|
let existingEmailOnly = await varDatabaseDbHandler({
|
||||||
database: database ? database : "datasquirel",
|
database: database ? database : "datasquirel",
|
||||||
@ -76,7 +76,7 @@ export default async function handleSocialDb({
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const foundUserQuery = `SELECT * FROM users WHERE email=? AND social_login='1' AND social_platform=? AND social_id=?`;
|
const foundUserQuery = `SELECT * FROM datasquirel.users WHERE email=? AND social_login='1' AND social_platform=? AND social_id=?`;
|
||||||
const foundUserQueryValues = [finalEmail, social_platform, social_id];
|
const foundUserQueryValues = [finalEmail, social_platform, social_id];
|
||||||
|
|
||||||
const foundUser = await varDatabaseDbHandler({
|
const foundUser = await varDatabaseDbHandler({
|
||||||
@ -134,7 +134,7 @@ export default async function handleSocialDb({
|
|||||||
await addMariadbUser({ userId: newUser.insertId, useLocal });
|
await addMariadbUser({ userId: newUser.insertId, useLocal });
|
||||||
}
|
}
|
||||||
|
|
||||||
const newUserQueriedQuery = `SELECT * FROM users WHERE id='${newUser.insertId}'`;
|
const newUserQueriedQuery = `SELECT * FROM datasquirel.users WHERE id='${newUser.insertId}'`;
|
||||||
|
|
||||||
const newUserQueried = await varDatabaseDbHandler({
|
const newUserQueried = await varDatabaseDbHandler({
|
||||||
database: database ? database : "datasquirel",
|
database: database ? database : "datasquirel",
|
||||||
|
@ -30,11 +30,13 @@ export default async function loginSocialUser({
|
|||||||
additionalFields,
|
additionalFields,
|
||||||
useLocal,
|
useLocal,
|
||||||
}: Param): Promise<APILoginFunctionReturn> {
|
}: Param): Promise<APILoginFunctionReturn> {
|
||||||
const foundUserQuery = `SELECT * FROM users WHERE email=? AND social_id=? AND social_platform=?`;
|
const finalDbName = database ? database : "datasquirel";
|
||||||
|
|
||||||
|
const foundUserQuery = `SELECT * FROM \`${finalDbName}\`.\`users\` WHERE email=? AND social_id=? AND social_platform=?`;
|
||||||
const foundUserValues = [user.email, user.social_id, social_platform];
|
const foundUserValues = [user.email, user.social_id, social_platform];
|
||||||
|
|
||||||
const foundUser = await varDatabaseDbHandler({
|
const foundUser = await varDatabaseDbHandler({
|
||||||
database: database ? database : "datasquirel",
|
database: finalDbName,
|
||||||
queryString: foundUserQuery,
|
queryString: foundUserQuery,
|
||||||
queryValuesArray: foundUserValues,
|
queryValuesArray: foundUserValues,
|
||||||
useLocal,
|
useLocal,
|
||||||
|
@ -46,7 +46,7 @@ export default async function apiCreateUser({
|
|||||||
|
|
||||||
payload.password = hashedPassword;
|
payload.password = hashedPassword;
|
||||||
|
|
||||||
const fieldsQuery = `SHOW COLUMNS FROM users`;
|
const fieldsQuery = `SHOW COLUMNS FROM ${dbFullName}.users`;
|
||||||
|
|
||||||
let fields = await varDatabaseDbHandler({
|
let fields = await varDatabaseDbHandler({
|
||||||
queryString: fieldsQuery,
|
queryString: fieldsQuery,
|
||||||
@ -100,7 +100,7 @@ export default async function apiCreateUser({
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const existingUserQuery = `SELECT * FROM users WHERE email = ?${
|
const existingUserQuery = `SELECT * FROM ${dbFullName}.users WHERE email = ?${
|
||||||
payload.username ? " OR username = ?" : ""
|
payload.username ? " OR username = ?" : ""
|
||||||
}`;
|
}`;
|
||||||
const existingUserValues = payload.username
|
const existingUserValues = payload.username
|
||||||
@ -140,7 +140,7 @@ export default async function apiCreateUser({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (addUser?.insertId) {
|
if (addUser?.insertId) {
|
||||||
const newlyAddedUserQuery = `SELECT id,first_name,last_name,email,username,phone,image,image_thumbnail,city,state,country,zip_code,address,verification_status,more_user_data FROM users WHERE id='${addUser.insertId}'`;
|
const newlyAddedUserQuery = `SELECT id,first_name,last_name,email,username,phone,image,image_thumbnail,city,state,country,zip_code,address,verification_status,more_user_data FROM ${dbFullName}.users WHERE id='${addUser.insertId}'`;
|
||||||
|
|
||||||
const newlyAddedUser = await varDatabaseDbHandler({
|
const newlyAddedUser = await varDatabaseDbHandler({
|
||||||
queryString: newlyAddedUserQuery,
|
queryString: newlyAddedUserQuery,
|
||||||
|
@ -16,7 +16,7 @@ export default async function apiDeleteUser({
|
|||||||
deletedUserId,
|
deletedUserId,
|
||||||
useLocal,
|
useLocal,
|
||||||
}: Param): Promise<Return> {
|
}: Param): Promise<Return> {
|
||||||
const existingUserQuery = `SELECT * FROM users WHERE id = ?`;
|
const existingUserQuery = `SELECT * FROM ${dbFullName}.users WHERE id = ?`;
|
||||||
const existingUserValues = [deletedUserId];
|
const existingUserValues = [deletedUserId];
|
||||||
|
|
||||||
const existingUser = await varDatabaseDbHandler({
|
const existingUser = await varDatabaseDbHandler({
|
||||||
|
@ -13,13 +13,17 @@ export default async function apiGetUser({
|
|||||||
userId,
|
userId,
|
||||||
useLocal,
|
useLocal,
|
||||||
}: APIGetUserFunctionParams): Promise<GetUserFunctionReturn> {
|
}: APIGetUserFunctionParams): Promise<GetUserFunctionReturn> {
|
||||||
const query = `SELECT ${fields.join(",")} FROM users WHERE id=?`;
|
const finalDbName = dbFullName.replace(/[^a-z0-9_]/g, "");
|
||||||
|
|
||||||
|
const query = `SELECT ${fields.join(
|
||||||
|
","
|
||||||
|
)} FROM ${finalDbName}.users WHERE id=?`;
|
||||||
const API_USER_ID = userId || process.env.DSQL_API_USER_ID;
|
const API_USER_ID = userId || process.env.DSQL_API_USER_ID;
|
||||||
|
|
||||||
let foundUser = await varDatabaseDbHandler({
|
let foundUser = await varDatabaseDbHandler({
|
||||||
queryString: query,
|
queryString: query,
|
||||||
queryValuesArray: [API_USER_ID],
|
queryValuesArray: [API_USER_ID],
|
||||||
database: dbFullName.replace(/[^a-z0-9_]/g, ""),
|
database: finalDbName,
|
||||||
useLocal,
|
useLocal,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ export default async function apiLoginUser({
|
|||||||
social,
|
social,
|
||||||
useLocal,
|
useLocal,
|
||||||
}: APILoginFunctionParams): Promise<APILoginFunctionReturn> {
|
}: APILoginFunctionParams): Promise<APILoginFunctionReturn> {
|
||||||
const dbFullName = database;
|
const dbFullName = database.replace(/[^a-z0-9_]/g, "");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check input validity
|
* Check input validity
|
||||||
@ -55,9 +55,9 @@ export default async function apiLoginUser({
|
|||||||
: null;
|
: null;
|
||||||
|
|
||||||
let foundUser = await varDatabaseDbHandler({
|
let foundUser = await varDatabaseDbHandler({
|
||||||
queryString: `SELECT * FROM users WHERE email = ? OR username = ?`,
|
queryString: `SELECT * FROM ${dbFullName}.users WHERE email = ? OR username = ?`,
|
||||||
queryValuesArray: [email, username],
|
queryValuesArray: [email, username],
|
||||||
database: dbFullName.replace(/[^a-z0-9_]/g, ""),
|
database: dbFullName,
|
||||||
useLocal,
|
useLocal,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -108,9 +108,9 @@ export default async function apiLoginUser({
|
|||||||
|
|
||||||
if (isPasswordCorrect && email_login) {
|
if (isPasswordCorrect && email_login) {
|
||||||
const resetTempCode = await varDatabaseDbHandler({
|
const resetTempCode = await varDatabaseDbHandler({
|
||||||
queryString: `UPDATE users SET ${email_login_field} = '' WHERE email = ? OR username = ?`,
|
queryString: `UPDATE ${dbFullName}.users SET ${email_login_field} = '' WHERE email = ? OR username = ?`,
|
||||||
queryValuesArray: [email, username],
|
queryValuesArray: [email, username],
|
||||||
database: dbFullName.replace(/[^a-z0-9_]/g, ""),
|
database: dbFullName,
|
||||||
useLocal,
|
useLocal,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ export default async function apiReauthUser({
|
|||||||
let foundUser =
|
let foundUser =
|
||||||
existingUser?.id && existingUser.id.toString().match(/./)
|
existingUser?.id && existingUser.id.toString().match(/./)
|
||||||
? await varDatabaseDbHandler({
|
? await varDatabaseDbHandler({
|
||||||
queryString: `SELECT * FROM users WHERE id=?`,
|
queryString: `SELECT * FROM ${database}.users WHERE id=?`,
|
||||||
queryValuesArray: [existingUser.id.toString()],
|
queryValuesArray: [existingUser.id.toString()],
|
||||||
database,
|
database,
|
||||||
useLocal,
|
useLocal,
|
||||||
|
@ -46,7 +46,7 @@ export default async function apiSendEmailCode({
|
|||||||
}
|
}
|
||||||
const createdAt = Date.now();
|
const createdAt = Date.now();
|
||||||
|
|
||||||
const foundUserQuery = `SELECT * FROM users WHERE email = ?`;
|
const foundUserQuery = `SELECT * FROM ${database}.users WHERE email = ?`;
|
||||||
const foundUserValues = [email];
|
const foundUserValues = [email];
|
||||||
|
|
||||||
let foundUser = await varDatabaseDbHandler({
|
let foundUser = await varDatabaseDbHandler({
|
||||||
@ -107,13 +107,13 @@ export default async function apiSendEmailCode({
|
|||||||
|
|
||||||
if (!info?.accepted) throw new Error("Mail not Sent!");
|
if (!info?.accepted) throw new Error("Mail not Sent!");
|
||||||
|
|
||||||
const setTempCodeQuery = `UPDATE users SET ${email_login_field} = ? WHERE email = ?`;
|
const setTempCodeQuery = `UPDATE ${database}.users SET ${email_login_field} = ? WHERE email = ?`;
|
||||||
const setTempCodeValues = [tempCode + `-${createdAt}`, email];
|
const setTempCodeValues = [tempCode + `-${createdAt}`, email];
|
||||||
|
|
||||||
let setTempCode = await varDatabaseDbHandler({
|
let setTempCode = await varDatabaseDbHandler({
|
||||||
queryString: setTempCodeQuery,
|
queryString: setTempCodeQuery,
|
||||||
queryValuesArray: setTempCodeValues,
|
queryValuesArray: setTempCodeValues,
|
||||||
database: database,
|
database,
|
||||||
useLocal,
|
useLocal,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ export default async function apiUpdateUser({
|
|||||||
useLocal,
|
useLocal,
|
||||||
dbSchema,
|
dbSchema,
|
||||||
}: Param): Promise<Return> {
|
}: Param): Promise<Return> {
|
||||||
const existingUserQuery = `SELECT * FROM users WHERE id = ?`;
|
const existingUserQuery = `SELECT * FROM ${dbFullName}.users WHERE id = ?`;
|
||||||
const existingUserValues = [updatedUserId];
|
const existingUserValues = [updatedUserId];
|
||||||
|
|
||||||
const existingUser = await varDatabaseDbHandler({
|
const existingUser = await varDatabaseDbHandler({
|
||||||
|
@ -107,8 +107,7 @@ export default async function addDbEntry({
|
|||||||
)
|
)
|
||||||
: await dbHandler({
|
: await dbHandler({
|
||||||
paradigm: "Read Only",
|
paradigm: "Read Only",
|
||||||
database: dbFullName,
|
queryString: `SELECT * FROM \`${dbFullName}\`.\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`,
|
||||||
queryString: `SELECT * FROM \`${tableName}\` WHERE \`${duplicateColumnName}\`=?`,
|
|
||||||
queryValues: [duplicateColumnValue],
|
queryValues: [duplicateColumnValue],
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -234,7 +233,7 @@ export default async function addDbEntry({
|
|||||||
|
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
|
|
||||||
const query = `INSERT INTO \`${tableName}\` (${insertKeysArray.join(
|
const query = `INSERT INTO \`${dbFullName}\`.\`${tableName}\` (${insertKeysArray.join(
|
||||||
","
|
","
|
||||||
)}) VALUES (${insertValuesArray.map(() => "?").join(",")})`;
|
)}) VALUES (${insertValuesArray.map(() => "?").join(",")})`;
|
||||||
const queryValuesArray = insertValuesArray;
|
const queryValuesArray = insertValuesArray;
|
||||||
@ -243,7 +242,6 @@ export default async function addDbEntry({
|
|||||||
? await dbHandler(query, queryValuesArray)
|
? await dbHandler(query, queryValuesArray)
|
||||||
: await dbHandler({
|
: await dbHandler({
|
||||||
paradigm,
|
paradigm,
|
||||||
database: dbFullName,
|
|
||||||
queryString: query,
|
queryString: query,
|
||||||
queryValues: queryValuesArray,
|
queryValues: queryValuesArray,
|
||||||
});
|
});
|
||||||
|
@ -47,14 +47,13 @@ export default async function deleteDbEntry({
|
|||||||
*
|
*
|
||||||
* @description
|
* @description
|
||||||
*/
|
*/
|
||||||
const query = `DELETE FROM ${tableName} WHERE \`${identifierColumnName}\`=?`;
|
const query = `DELETE FROM \`${dbFullName}\`.\`${tableName}\` WHERE \`${identifierColumnName}\`=?`;
|
||||||
|
|
||||||
const deletedEntry = isMaster
|
const deletedEntry = isMaster
|
||||||
? await dbHandler(query, [identifierValue])
|
? await dbHandler(query, [identifierValue])
|
||||||
: await dbHandler({
|
: await dbHandler({
|
||||||
paradigm,
|
paradigm,
|
||||||
queryString: query,
|
queryString: query,
|
||||||
database: dbFullName,
|
|
||||||
queryValues: [identifierValue],
|
queryValues: [identifierValue],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -84,7 +84,6 @@ export default async function runQuery({
|
|||||||
result = await varReadOnlyDatabaseDbHandler({
|
result = await varReadOnlyDatabaseDbHandler({
|
||||||
queryString: formattedQuery,
|
queryString: formattedQuery,
|
||||||
queryValuesArray: queryValuesArray?.map((vl) => String(vl)),
|
queryValuesArray: queryValuesArray?.map((vl) => String(vl)),
|
||||||
database: dbFullName,
|
|
||||||
tableSchema,
|
tableSchema,
|
||||||
useLocal: local,
|
useLocal: local,
|
||||||
});
|
});
|
||||||
@ -92,7 +91,6 @@ export default async function runQuery({
|
|||||||
result = await fullAccessDbHandler({
|
result = await fullAccessDbHandler({
|
||||||
queryString: formattedQuery,
|
queryString: formattedQuery,
|
||||||
queryValuesArray: queryValuesArray?.map((vl) => String(vl)),
|
queryValuesArray: queryValuesArray?.map((vl) => String(vl)),
|
||||||
database: dbFullName,
|
|
||||||
tableSchema,
|
tableSchema,
|
||||||
local,
|
local,
|
||||||
});
|
});
|
||||||
|
@ -164,7 +164,7 @@ export default async function updateDbEntry({
|
|||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
|
|
||||||
const query = `UPDATE ${tableName} SET ${updateKeyValueArray.join(
|
const query = `UPDATE \`${dbFullName}\`.\`${tableName}\` SET ${updateKeyValueArray.join(
|
||||||
","
|
","
|
||||||
)} WHERE \`${identifierColumnName}\`=?`;
|
)} WHERE \`${identifierColumnName}\`=?`;
|
||||||
|
|
||||||
@ -174,7 +174,6 @@ export default async function updateDbEntry({
|
|||||||
? await dbHandler(query, updateValues)
|
? await dbHandler(query, updateValues)
|
||||||
: await dbHandler({
|
: await dbHandler({
|
||||||
paradigm,
|
paradigm,
|
||||||
database: dbFullName,
|
|
||||||
queryString: query,
|
queryString: query,
|
||||||
queryValues: updateValues,
|
queryValues: updateValues,
|
||||||
});
|
});
|
||||||
|
@ -1,20 +1,6 @@
|
|||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import serverError from "./serverError";
|
import serverError from "./serverError";
|
||||||
|
|
||||||
import mysql from "serverless-mysql";
|
|
||||||
import grabDbSSL from "../../utils/backend/grabDbSSL";
|
|
||||||
|
|
||||||
const connection = mysql({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
database: process.env.DSQL_DB_NAME,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: grabDbSSL(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* # Main DB Handler Function
|
* # Main DB Handler Function
|
||||||
*/
|
*/
|
||||||
@ -26,11 +12,6 @@ export default async function dbHandler(...args: any[]) {
|
|||||||
"utf8"
|
"utf8"
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
|
||||||
* Declare variables
|
|
||||||
*
|
|
||||||
* @description Declare "results" variable
|
|
||||||
*/
|
|
||||||
let results;
|
let results;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -39,6 +20,8 @@ export default async function dbHandler(...args: any[]) {
|
|||||||
* @description Fetch data from db if no cache
|
* @description Fetch data from db if no cache
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
|
const connection = global.DSQL_DB_CONN;
|
||||||
|
|
||||||
results = await new Promise((resolve, reject) => {
|
results = await new Promise((resolve, reject) => {
|
||||||
connection.query(
|
connection.query(
|
||||||
...args,
|
...args,
|
||||||
|
@ -7,7 +7,6 @@ import serverError from "./serverError";
|
|||||||
|
|
||||||
type Param = {
|
type Param = {
|
||||||
queryString: string;
|
queryString: string;
|
||||||
database: string;
|
|
||||||
local?: boolean;
|
local?: boolean;
|
||||||
tableSchema?: import("../../types").DSQL_TableSchemaType | null;
|
tableSchema?: import("../../types").DSQL_TableSchemaType | null;
|
||||||
queryValuesArray?: string[];
|
queryValuesArray?: string[];
|
||||||
@ -18,7 +17,6 @@ type Param = {
|
|||||||
*/
|
*/
|
||||||
export default async function fullAccessDbHandler({
|
export default async function fullAccessDbHandler({
|
||||||
queryString,
|
queryString,
|
||||||
database,
|
|
||||||
tableSchema,
|
tableSchema,
|
||||||
queryValuesArray,
|
queryValuesArray,
|
||||||
local,
|
local,
|
||||||
@ -42,7 +40,6 @@ export default async function fullAccessDbHandler({
|
|||||||
? await LOCAL_DB_HANDLER(queryString, queryValuesArray)
|
? await LOCAL_DB_HANDLER(queryString, queryValuesArray)
|
||||||
: await DSQL_USER_DB_HANDLER({
|
: await DSQL_USER_DB_HANDLER({
|
||||||
paradigm: "Full Access",
|
paradigm: "Full Access",
|
||||||
database,
|
|
||||||
queryString,
|
queryString,
|
||||||
queryValues: queryValuesArray,
|
queryValues: queryValuesArray,
|
||||||
});
|
});
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import serverError from "./serverError";
|
import serverError from "./serverError";
|
||||||
import NO_DB_HANDLER from "../../../package-shared/utils/backend/global-db/NO_DB_HANDLER";
|
import NO_DB_HANDLER from "@/package-shared/utils/backend/global-db/NO_DB_HANDLER";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* # No Database DB Handler
|
* # No Database DB Handler
|
||||||
|
@ -33,7 +33,6 @@ export default async function varDatabaseDbHandler({
|
|||||||
? true
|
? true
|
||||||
: false;
|
: false;
|
||||||
|
|
||||||
/** @type {any} */
|
|
||||||
const FINAL_DB_HANDLER: any = useLocal
|
const FINAL_DB_HANDLER: any = useLocal
|
||||||
? LOCAL_DB_HANDLER
|
? LOCAL_DB_HANDLER
|
||||||
: isMaster
|
: isMaster
|
||||||
@ -58,7 +57,6 @@ export default async function varDatabaseDbHandler({
|
|||||||
? await FINAL_DB_HANDLER(queryString, queryValuesArray)
|
? await FINAL_DB_HANDLER(queryString, queryValuesArray)
|
||||||
: await FINAL_DB_HANDLER({
|
: await FINAL_DB_HANDLER({
|
||||||
paradigm: "Full Access",
|
paradigm: "Full Access",
|
||||||
database,
|
|
||||||
queryString,
|
queryString,
|
||||||
queryValues: queryValuesArray,
|
queryValues: queryValuesArray,
|
||||||
});
|
});
|
||||||
@ -67,11 +65,11 @@ export default async function varDatabaseDbHandler({
|
|||||||
? await FINAL_DB_HANDLER(queryString)
|
? await FINAL_DB_HANDLER(queryString)
|
||||||
: await FINAL_DB_HANDLER({
|
: await FINAL_DB_HANDLER({
|
||||||
paradigm: "Full Access",
|
paradigm: "Full Access",
|
||||||
database,
|
|
||||||
queryString,
|
queryString,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
|
console.log(`varDatabaseDbHandler Error: ${error.message}`);
|
||||||
serverError({
|
serverError({
|
||||||
component: "varDatabaseDbHandler/lines-29-32",
|
component: "varDatabaseDbHandler/lines-29-32",
|
||||||
message: error.message,
|
message: error.message,
|
||||||
|
@ -8,7 +8,6 @@ import LOCAL_DB_HANDLER from "../../utils/backend/global-db/LOCAL_DB_HANDLER";
|
|||||||
|
|
||||||
type Param = {
|
type Param = {
|
||||||
queryString: string;
|
queryString: string;
|
||||||
database: string;
|
|
||||||
queryValuesArray?: string[];
|
queryValuesArray?: string[];
|
||||||
tableSchema?: import("../../types").DSQL_TableSchemaType;
|
tableSchema?: import("../../types").DSQL_TableSchemaType;
|
||||||
useLocal?: boolean;
|
useLocal?: boolean;
|
||||||
@ -20,7 +19,6 @@ type Param = {
|
|||||||
*/
|
*/
|
||||||
export default async function varReadOnlyDatabaseDbHandler({
|
export default async function varReadOnlyDatabaseDbHandler({
|
||||||
queryString,
|
queryString,
|
||||||
database,
|
|
||||||
queryValuesArray,
|
queryValuesArray,
|
||||||
tableSchema,
|
tableSchema,
|
||||||
useLocal,
|
useLocal,
|
||||||
@ -42,7 +40,6 @@ export default async function varReadOnlyDatabaseDbHandler({
|
|||||||
? await LOCAL_DB_HANDLER(queryString, queryValuesArray)
|
? await LOCAL_DB_HANDLER(queryString, queryValuesArray)
|
||||||
: await DSQL_USER_DB_HANDLER({
|
: await DSQL_USER_DB_HANDLER({
|
||||||
paradigm: "Read Only",
|
paradigm: "Read Only",
|
||||||
database,
|
|
||||||
queryString,
|
queryString,
|
||||||
queryValues: queryValuesArray,
|
queryValues: queryValuesArray,
|
||||||
});
|
});
|
||||||
|
@ -2,17 +2,6 @@ require("dotenv").config({ path: "./../.env" });
|
|||||||
import mysql from "serverless-mysql";
|
import mysql from "serverless-mysql";
|
||||||
import grabDbSSL from "../utils/backend/grabDbSSL";
|
import grabDbSSL from "../utils/backend/grabDbSSL";
|
||||||
|
|
||||||
const connection = mysql({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
database: process.env.DSQL_DB_NAME,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: grabDbSSL(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* # Main DB Handler Function
|
* # Main DB Handler Function
|
||||||
* @async
|
* @async
|
||||||
@ -25,11 +14,8 @@ const connection = mysql({
|
|||||||
* @returns {Promise<object|null>}
|
* @returns {Promise<object|null>}
|
||||||
*/
|
*/
|
||||||
(async () => {
|
(async () => {
|
||||||
/**
|
const connection = global.DSQL_DB_CONN;
|
||||||
* Switch Database
|
|
||||||
*
|
|
||||||
* @description If a database is provided, switch to it
|
|
||||||
*/
|
|
||||||
try {
|
try {
|
||||||
const result = await connection.query(
|
const result = await connection.query(
|
||||||
"SELECT id,first_name,last_name FROM users LIMIT 3"
|
"SELECT id,first_name,last_name FROM users LIMIT 3"
|
||||||
|
@ -8,7 +8,6 @@ import updateTable from "./utils/updateTable";
|
|||||||
import dbHandler from "./utils/dbHandler";
|
import dbHandler from "./utils/dbHandler";
|
||||||
import EJSON from "../utils/ejson";
|
import EJSON from "../utils/ejson";
|
||||||
import { DSQL_DatabaseSchemaType } from "../types";
|
import { DSQL_DatabaseSchemaType } from "../types";
|
||||||
import { parseArgs } from "util";
|
|
||||||
|
|
||||||
type Param = {
|
type Param = {
|
||||||
userId?: number | string | null;
|
userId?: number | string | null;
|
||||||
@ -18,20 +17,13 @@ type Param = {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* # Create database from Schema Function
|
* # Create database from Schema Function
|
||||||
|
* @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database
|
||||||
*/
|
*/
|
||||||
export default async function createDbFromSchema({
|
export default async function createDbFromSchema({
|
||||||
userId,
|
userId,
|
||||||
targetDatabase,
|
targetDatabase,
|
||||||
dbSchemaData,
|
dbSchemaData,
|
||||||
}: Param) {
|
}: Param) {
|
||||||
console.log("///////////////////////////////");
|
|
||||||
console.log("///////////////////////////////");
|
|
||||||
console.log("Rebuilding Database ...");
|
|
||||||
console.log("process.env.DSQL_DB_HOST", process.env.DSQL_DB_HOST);
|
|
||||||
console.log("process.env.DSQL_DB_USERNAME", process.env.DSQL_DB_USERNAME);
|
|
||||||
console.log("process.env.DSQL_DB_PASSWORD", process.env.DSQL_DB_PASSWORD);
|
|
||||||
console.log("process.env.DSQL_DB_NAME", process.env.DSQL_DB_NAME);
|
|
||||||
|
|
||||||
const schemaPath = userId
|
const schemaPath = userId
|
||||||
? path.join(
|
? path.join(
|
||||||
String(process.env.DSQL_USER_DB_SCHEMA_PATH),
|
String(process.env.DSQL_USER_DB_SCHEMA_PATH),
|
||||||
@ -53,9 +45,8 @@ export default async function createDbFromSchema({
|
|||||||
// await createDatabasesFromSchema(dbSchema);
|
// await createDatabasesFromSchema(dbSchema);
|
||||||
|
|
||||||
for (let i = 0; i < dbSchema.length; i++) {
|
for (let i = 0; i < dbSchema.length; i++) {
|
||||||
/** @type {import("../types").DSQL_DatabaseSchemaType} */
|
const database: DSQL_DatabaseSchemaType = dbSchema[i];
|
||||||
const database: import("../types").DSQL_DatabaseSchemaType =
|
|
||||||
dbSchema[i];
|
|
||||||
const { dbFullName, tables, dbName, dbSlug, childrenDatabases } =
|
const { dbFullName, tables, dbName, dbSlug, childrenDatabases } =
|
||||||
database;
|
database;
|
||||||
|
|
||||||
@ -63,18 +54,12 @@ export default async function createDbFromSchema({
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("Checking Database ...");
|
|
||||||
|
|
||||||
/** @type {any} */
|
/** @type {any} */
|
||||||
const dbCheck: any = await noDatabaseDbHandler(
|
const dbCheck: any = await noDatabaseDbHandler(
|
||||||
`SELECT SCHEMA_NAME AS dbFullName FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '${dbFullName}'`
|
`SELECT SCHEMA_NAME AS dbFullName FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '${dbFullName}'`
|
||||||
);
|
);
|
||||||
|
|
||||||
console.log("DB Checked Success!");
|
if (!dbCheck?.[0]?.dbFullName) {
|
||||||
|
|
||||||
if (dbCheck && dbCheck[0]?.dbFullName) {
|
|
||||||
// Database Exists
|
|
||||||
} else {
|
|
||||||
const newDatabase = await noDatabaseDbHandler(
|
const newDatabase = await noDatabaseDbHandler(
|
||||||
`CREATE DATABASE IF NOT EXISTS \`${dbFullName}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`
|
`CREATE DATABASE IF NOT EXISTS \`${dbFullName}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`
|
||||||
);
|
);
|
||||||
@ -115,20 +100,17 @@ export default async function createDbFromSchema({
|
|||||||
if (oldTableFilteredArray && oldTableFilteredArray[0]) {
|
if (oldTableFilteredArray && oldTableFilteredArray[0]) {
|
||||||
console.log("Renaming Table");
|
console.log("Renaming Table");
|
||||||
await varDatabaseDbHandler({
|
await varDatabaseDbHandler({
|
||||||
queryString: `RENAME TABLE \`${oldTableFilteredArray[0].tableNameOld}\` TO \`${oldTableFilteredArray[0].tableName}\``,
|
queryString: `RENAME TABLE \`${dbFullName}\`.\`${oldTableFilteredArray[0].tableNameOld}\` TO \`${oldTableFilteredArray[0].tableName}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
console.log(`Dropping Table from ${dbFullName}`);
|
console.log(`Dropping Table from ${dbFullName}`);
|
||||||
await varDatabaseDbHandler({
|
await varDatabaseDbHandler({
|
||||||
queryString: `DROP TABLE \`${TABLE_NAME}\``,
|
queryString: `DROP TABLE \`${dbFullName}\`.\`${TABLE_NAME}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const deleteTableEntry = await dbHandler({
|
const deleteTableEntry = await dbHandler({
|
||||||
query: `DELETE FROM user_database_tables WHERE user_id = ? AND db_slug = ? AND table_slug = ?`,
|
query: `DELETE FROM datasquirel.user_database_tables WHERE user_id = ? AND db_slug = ? AND table_slug = ?`,
|
||||||
values: [userId, dbSlug, TABLE_NAME],
|
values: [userId, dbSlug, TABLE_NAME],
|
||||||
database: "datasquirel",
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -136,8 +118,7 @@ export default async function createDbFromSchema({
|
|||||||
|
|
||||||
const recordedDbEntryArray = userId
|
const recordedDbEntryArray = userId
|
||||||
? await varDatabaseDbHandler({
|
? await varDatabaseDbHandler({
|
||||||
database: "datasquirel",
|
queryString: `SELECT * FROM datasquirel.user_databases WHERE db_full_name = ?`,
|
||||||
queryString: `SELECT * FROM user_databases WHERE db_full_name = ?`,
|
|
||||||
queryValuesArray: [dbFullName],
|
queryValuesArray: [dbFullName],
|
||||||
})
|
})
|
||||||
: undefined;
|
: undefined;
|
||||||
@ -168,7 +149,6 @@ export default async function createDbFromSchema({
|
|||||||
TABLE_NAME = ?
|
TABLE_NAME = ?
|
||||||
) AS tableExists`,
|
) AS tableExists`,
|
||||||
queryValuesArray: [dbFullName, table.tableName],
|
queryValuesArray: [dbFullName, table.tableName],
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
@ -222,7 +202,6 @@ export default async function createDbFromSchema({
|
|||||||
tableName: tableName,
|
tableName: tableName,
|
||||||
tableInfoArray: fields,
|
tableInfoArray: fields,
|
||||||
dbFullName: dbFullName,
|
dbFullName: dbFullName,
|
||||||
dbSchema,
|
|
||||||
tableSchema: table,
|
tableSchema: table,
|
||||||
recordedDbEntry,
|
recordedDbEntry,
|
||||||
});
|
});
|
||||||
@ -255,8 +234,7 @@ export default async function createDbFromSchema({
|
|||||||
*/ // @ts-ignore
|
*/ // @ts-ignore
|
||||||
const allExistingIndexes: import("../types").DSQL_MYSQL_SHOW_INDEXES_Type[] =
|
const allExistingIndexes: import("../types").DSQL_MYSQL_SHOW_INDEXES_Type[] =
|
||||||
await varDatabaseDbHandler({
|
await varDatabaseDbHandler({
|
||||||
queryString: `SHOW INDEXES FROM \`${tableName}\``,
|
queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const existingKeyInDb =
|
const existingKeyInDb =
|
||||||
@ -278,11 +256,10 @@ export default async function createDbFromSchema({
|
|||||||
indexType?.match(/fullText/i)
|
indexType?.match(/fullText/i)
|
||||||
? " FULLTEXT"
|
? " FULLTEXT"
|
||||||
: ""
|
: ""
|
||||||
} INDEX \`${alias}\` ON ${tableName}(${indexTableFields
|
} INDEX \`${alias}\` ON \`${dbFullName}\`.\`${tableName}\`(${indexTableFields
|
||||||
?.map((nm) => nm.value)
|
?.map((nm) => nm.value)
|
||||||
.map((nm) => `\`${nm}\``)
|
.map((nm) => `\`${nm}\``)
|
||||||
.join(",")}) COMMENT 'schema_index'`,
|
.join(",")}) COMMENT 'schema_index'`,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -306,21 +283,4 @@ export default async function createDbFromSchema({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("Database Successfully Rebuilt!");
|
|
||||||
console.log("///////////////////////////////");
|
|
||||||
console.log("///////////////////////////////");
|
|
||||||
}
|
|
||||||
|
|
||||||
const { values } = parseArgs({
|
|
||||||
args: process.argv,
|
|
||||||
options: {
|
|
||||||
exec: { type: "boolean" },
|
|
||||||
},
|
|
||||||
strict: true,
|
|
||||||
allowPositionals: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
if (values.exec) {
|
|
||||||
createDbFromSchema({});
|
|
||||||
}
|
}
|
||||||
|
@ -32,17 +32,14 @@ varDatabaseDbHandler({
|
|||||||
|
|
||||||
const tableInfo = await varDatabaseDbHandler({
|
const tableInfo = await varDatabaseDbHandler({
|
||||||
queryString: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`,
|
queryString: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`,
|
||||||
database: db_full_name,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const updateDbCharset = await varDatabaseDbHandler({
|
const updateDbCharset = await varDatabaseDbHandler({
|
||||||
queryString: `ALTER DATABASE ${db_full_name} CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;`,
|
queryString: `ALTER DATABASE ${db_full_name} CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;`,
|
||||||
database: db_full_name,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const updateEncoding = await varDatabaseDbHandler({
|
const updateEncoding = await varDatabaseDbHandler({
|
||||||
queryString: `ALTER TABLE \`${table_slug}\` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`,
|
queryString: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`,
|
||||||
database: db_full_name,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,9 +7,9 @@ export interface GrantType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Param = {
|
type Param = {
|
||||||
username: string;
|
username?: string;
|
||||||
host: string;
|
host?: string;
|
||||||
grants: GrantType[];
|
grants?: GrantType[];
|
||||||
userId: string;
|
userId: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7,13 +7,14 @@ import dbHandler from "../utils/dbHandler";
|
|||||||
import handleGrants, { GrantType } from "./handleGrants";
|
import handleGrants, { GrantType } from "./handleGrants";
|
||||||
import encrypt from "../../functions/dsql/encrypt";
|
import encrypt from "../../functions/dsql/encrypt";
|
||||||
import decrypt from "../../functions/dsql/decrypt";
|
import decrypt from "../../functions/dsql/decrypt";
|
||||||
|
import { MYSQL_mariadb_users_table_def } from "../../types";
|
||||||
|
|
||||||
const defaultMariadbUserHost = process.env.DSQL_DB_HOST || "127.0.0.1";
|
const defaultMariadbUserHost = process.env.DSQL_DB_HOST || "127.0.0.1";
|
||||||
|
|
||||||
type Param = {
|
type Param = {
|
||||||
userId?: number | string;
|
userId?: number | string;
|
||||||
mariadbUserHost?: string;
|
mariadbUserHost?: string;
|
||||||
mariadbUser?: string;
|
mariadbUsername?: string;
|
||||||
sqlUserID?: string | number;
|
sqlUserID?: string | number;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -23,29 +24,30 @@ type Param = {
|
|||||||
export default async function refreshUsersAndGrants({
|
export default async function refreshUsersAndGrants({
|
||||||
userId,
|
userId,
|
||||||
mariadbUserHost,
|
mariadbUserHost,
|
||||||
mariadbUser,
|
mariadbUsername,
|
||||||
sqlUserID,
|
sqlUserID,
|
||||||
}: Param) {
|
}: Param) {
|
||||||
/**
|
const mariadbUsers = (await dbHandler({
|
||||||
* @description Users
|
query: `SELECT * FROM mariadb_users`,
|
||||||
* @type {*[] | null}
|
})) as any[] | null;
|
||||||
*/ // @ts-ignore
|
|
||||||
const users: any[] | null = await dbHandler({
|
|
||||||
query: `SELECT * FROM users`,
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!users?.[0]) {
|
if (!mariadbUsers?.[0]) {
|
||||||
process.exit();
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < users.length; i++) {
|
const isRootUser = userId
|
||||||
const user = users[i];
|
? userId == Number(process.env.DSQL_SU_USER_ID)
|
||||||
|
: false;
|
||||||
|
|
||||||
if (!user) continue;
|
for (let i = 0; i < mariadbUsers.length; i++) {
|
||||||
if (userId && user.id != userId) continue;
|
const mariadbUser = mariadbUsers[i];
|
||||||
|
|
||||||
|
if (!mariadbUser) continue;
|
||||||
|
if (userId && mariadbUser.user_id != userId) continue;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const { mariadb_user, mariadb_host, mariadb_pass, id } = user;
|
const { mariadb_user, mariadb_host, mariadb_pass, user_id } =
|
||||||
|
mariadbUser;
|
||||||
const existingUser = await noDatabaseDbHandler(
|
const existingUser = await noDatabaseDbHandler(
|
||||||
`SELECT * FROM mysql.user WHERE User = '${mariadb_user}' AND Host = '${mariadb_host}'`
|
`SELECT * FROM mysql.user WHERE User = '${mariadb_user}' AND Host = '${mariadb_host}'`
|
||||||
);
|
);
|
||||||
@ -58,9 +60,6 @@ export default async function refreshUsersAndGrants({
|
|||||||
})
|
})
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
/**
|
|
||||||
* @type {import("../../types").MYSQL_mariadb_users_table_def | undefined}
|
|
||||||
*/
|
|
||||||
const activeMariadbUserObject:
|
const activeMariadbUserObject:
|
||||||
| import("../../types").MYSQL_mariadb_users_table_def
|
| import("../../types").MYSQL_mariadb_users_table_def
|
||||||
| undefined = Array.isArray(existingMariaDBUserArray)
|
| undefined = Array.isArray(existingMariaDBUserArray)
|
||||||
@ -79,7 +78,10 @@ export default async function refreshUsersAndGrants({
|
|||||||
mariadbUserHost == defaultMariadbUserHost
|
mariadbUserHost == defaultMariadbUserHost
|
||||||
);
|
);
|
||||||
|
|
||||||
const dslUsername = `dsql_user_${id}`;
|
const dslUsername = isRootUser
|
||||||
|
? mariadbUsername
|
||||||
|
: `dsql_user_${user_id}`;
|
||||||
|
|
||||||
const dsqlPassword = activeMariadbUserObject?.password
|
const dsqlPassword = activeMariadbUserObject?.password
|
||||||
? activeMariadbUserObject.password
|
? activeMariadbUserObject.password
|
||||||
: isUserExisting
|
: isUserExisting
|
||||||
@ -101,12 +103,13 @@ export default async function refreshUsersAndGrants({
|
|||||||
encryptionKey: process.env.DSQL_ENCRYPTION_PASSWORD,
|
encryptionKey: process.env.DSQL_ENCRYPTION_PASSWORD,
|
||||||
encryptionSalt: process.env.DSQL_ENCRYPTION_SALT,
|
encryptionSalt: process.env.DSQL_ENCRYPTION_SALT,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!isUserExisting &&
|
!isUserExisting &&
|
||||||
!sqlUserID &&
|
!sqlUserID &&
|
||||||
!isPrimary &&
|
!isPrimary &&
|
||||||
!mariadbUserHost &&
|
!mariadbUserHost &&
|
||||||
!mariadbUser
|
!mariadbUsername
|
||||||
) {
|
) {
|
||||||
const createNewUser = await noDatabaseDbHandler(
|
const createNewUser = await noDatabaseDbHandler(
|
||||||
`CREATE USER IF NOT EXISTS '${dslUsername}'@'${defaultMariadbUserHost}' IDENTIFIED BY '${dsqlPassword}'`
|
`CREATE USER IF NOT EXISTS '${dslUsername}'@'${defaultMariadbUserHost}' IDENTIFIED BY '${dsqlPassword}'`
|
||||||
@ -115,7 +118,7 @@ export default async function refreshUsersAndGrants({
|
|||||||
console.log("createNewUser", createNewUser);
|
console.log("createNewUser", createNewUser);
|
||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
`User ${user.id}: ${user.first_name} ${user.last_name} SQL credentials successfully updated.`
|
`User ${mariadbUser.id}: ${mariadbUser.first_name} ${mariadbUser.last_name} SQL credentials successfully updated.`
|
||||||
);
|
);
|
||||||
|
|
||||||
const updateUser = await dbHandler({
|
const updateUser = await dbHandler({
|
||||||
@ -124,9 +127,13 @@ export default async function refreshUsersAndGrants({
|
|||||||
dslUsername,
|
dslUsername,
|
||||||
defaultMariadbUserHost,
|
defaultMariadbUserHost,
|
||||||
encryptedPassword,
|
encryptedPassword,
|
||||||
user.id,
|
mariadbUser.id,
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
} else if (!isUserExisting && mariadbUserHost) {
|
||||||
|
const createNewUser = await noDatabaseDbHandler(
|
||||||
|
`CREATE USER IF NOT EXISTS '${dslUsername}'@'${mariadbUserHost}' IDENTIFIED BY '${dsqlPassword}'`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isPrimary) {
|
if (isPrimary) {
|
||||||
@ -140,7 +147,7 @@ export default async function refreshUsersAndGrants({
|
|||||||
dslUsername,
|
dslUsername,
|
||||||
finalHost,
|
finalHost,
|
||||||
encryptedPassword,
|
encryptedPassword,
|
||||||
user.id,
|
mariadbUser.id,
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -154,7 +161,7 @@ export default async function refreshUsersAndGrants({
|
|||||||
*/
|
*/
|
||||||
const existingMariadbPrimaryUser = await dbHandler({
|
const existingMariadbPrimaryUser = await dbHandler({
|
||||||
query: `SELECT * FROM mariadb_users WHERE user_id = ? AND \`primary\` = 1`,
|
query: `SELECT * FROM mariadb_users WHERE user_id = ? AND \`primary\` = 1`,
|
||||||
values: [id],
|
values: [user_id],
|
||||||
});
|
});
|
||||||
|
|
||||||
const isPrimaryUserExisting = Boolean(
|
const isPrimaryUserExisting = Boolean(
|
||||||
@ -174,7 +181,7 @@ export default async function refreshUsersAndGrants({
|
|||||||
const insertPrimaryMariadbUser = await dbHandler({
|
const insertPrimaryMariadbUser = await dbHandler({
|
||||||
query: `INSERT INTO mariadb_users (user_id, username, password, \`primary\`, grants) VALUES (?, ?, ?, ?, ?)`,
|
query: `INSERT INTO mariadb_users (user_id, username, password, \`primary\`, grants) VALUES (?, ?, ?, ?, ?)`,
|
||||||
values: [
|
values: [
|
||||||
id,
|
user_id,
|
||||||
dslUsername,
|
dslUsername,
|
||||||
encryptedPassword,
|
encryptedPassword,
|
||||||
"1",
|
"1",
|
||||||
@ -187,32 +194,31 @@ export default async function refreshUsersAndGrants({
|
|||||||
|
|
||||||
const existingExtraMariadbUsers = await dbHandler({
|
const existingExtraMariadbUsers = await dbHandler({
|
||||||
query: `SELECT * FROM mariadb_users WHERE user_id = ? AND \`primary\` != '1'`,
|
query: `SELECT * FROM mariadb_users WHERE user_id = ? AND \`primary\` != '1'`,
|
||||||
values: [id],
|
values: [user_id],
|
||||||
});
|
});
|
||||||
|
|
||||||
if (Array.isArray(existingExtraMariadbUsers)) {
|
if (Array.isArray(existingExtraMariadbUsers)) {
|
||||||
for (let i = 0; i < existingExtraMariadbUsers.length; i++) {
|
for (let i = 0; i < existingExtraMariadbUsers.length; i++) {
|
||||||
const mariadbUser = existingExtraMariadbUsers[i];
|
const _mariadbUser = existingExtraMariadbUsers[
|
||||||
const {
|
i
|
||||||
user_id,
|
] as MYSQL_mariadb_users_table_def;
|
||||||
username,
|
|
||||||
host,
|
|
||||||
password,
|
|
||||||
primary,
|
|
||||||
grants,
|
|
||||||
} = mariadbUser;
|
|
||||||
|
|
||||||
if (mariadbUser && username != mariadbUser) continue;
|
if (
|
||||||
if (mariadbUserHost && host != mariadbUserHost) continue;
|
_mariadbUser &&
|
||||||
|
_mariadbUser.username != mariadbUsername
|
||||||
|
)
|
||||||
|
continue;
|
||||||
|
if (mariadbUserHost && _mariadbUser.host != mariadbUserHost)
|
||||||
|
continue;
|
||||||
|
|
||||||
const decrptedPassword = decrypt({
|
const decrptedPassword = decrypt({
|
||||||
encryptedString: password,
|
encryptedString: _mariadbUser.password || "",
|
||||||
encryptionKey: process.env.DSQL_ENCRYPTION_PASSWORD,
|
encryptionKey: process.env.DSQL_ENCRYPTION_PASSWORD,
|
||||||
encryptionSalt: process.env.DSQL_ENCRYPTION_SALT,
|
encryptionSalt: process.env.DSQL_ENCRYPTION_SALT,
|
||||||
});
|
});
|
||||||
|
|
||||||
const existingExtraMariadbUser = await noDatabaseDbHandler(
|
const existingExtraMariadbUser = await noDatabaseDbHandler(
|
||||||
`SELECT * FROM mysql.user WHERE User = '${username}' AND Host = '${host}'`
|
`SELECT * FROM mysql.user WHERE User='${_mariadbUser.username}' AND Host='${_mariadbUser.host}'`
|
||||||
);
|
);
|
||||||
|
|
||||||
const isExtraMariadbUserExisting = Boolean(
|
const isExtraMariadbUserExisting = Boolean(
|
||||||
@ -221,23 +227,24 @@ export default async function refreshUsersAndGrants({
|
|||||||
|
|
||||||
if (!isExtraMariadbUserExisting) {
|
if (!isExtraMariadbUserExisting) {
|
||||||
await noDatabaseDbHandler(
|
await noDatabaseDbHandler(
|
||||||
`CREATE USER IF NOT EXISTS '${username}'@'${host}' IDENTIFIED BY '${decrptedPassword}'`
|
`CREATE USER IF NOT EXISTS '${_mariadbUser.username}'@'${_mariadbUser.host}' IDENTIFIED BY '${decrptedPassword}'`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const isGrantHandled = await handleGrants({
|
const isGrantHandled = await handleGrants({
|
||||||
username,
|
username: _mariadbUser.username,
|
||||||
host,
|
host: _mariadbUser.host,
|
||||||
grants:
|
grants:
|
||||||
grants && typeof grants == "string"
|
_mariadbUser.grants &&
|
||||||
? JSON.parse(grants)
|
typeof _mariadbUser.grants == "string"
|
||||||
|
? JSON.parse(_mariadbUser.grants)
|
||||||
: [],
|
: [],
|
||||||
userId: String(userId),
|
userId: String(userId),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!isGrantHandled) {
|
if (!isGrantHandled) {
|
||||||
console.log(
|
console.log(
|
||||||
`Error in handling grants for user ${username}@${host}`
|
`Error in handling grants for user ${_mariadbUser.username}@${_mariadbUser.host}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ async function recoverMainJsonFromDb() {
|
|||||||
|
|
||||||
const tableFields = await varDatabaseDbHandler({
|
const tableFields = await varDatabaseDbHandler({
|
||||||
database: db_full_name,
|
database: db_full_name,
|
||||||
queryString: `SHOW COLUMNS FROM ${table_slug}`,
|
queryString: `SHOW COLUMNS FROM ${db_full_name}.${table_slug}`,
|
||||||
});
|
});
|
||||||
|
|
||||||
for (let k = 0; k < tableFields.length; k++) {
|
for (let k = 0; k < tableFields.length; k++) {
|
||||||
|
@ -23,7 +23,7 @@ console.log("Running Tailwind CSS compiler ...");
|
|||||||
|
|
||||||
fs.watch("./../", (curr, prev) => {
|
fs.watch("./../", (curr, prev) => {
|
||||||
exec(
|
exec(
|
||||||
`npx tailwindcss -i ./tailwind/main.css -o ./styles/tailwind.css`,
|
`bunx tailwindcss -i ./tailwind/main.css -o ./styles/tailwind.css`,
|
||||||
(error, stdout, stderr) => {
|
(error, stdout, stderr) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
console.log("ERROR =>", error.message);
|
console.log("ERROR =>", error.message);
|
||||||
|
@ -24,17 +24,14 @@ varDatabaseDbHandler({
|
|||||||
|
|
||||||
const tableInfo = await varDatabaseDbHandler({
|
const tableInfo = await varDatabaseDbHandler({
|
||||||
queryString: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`,
|
queryString: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`,
|
||||||
database: db_full_name,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const updateCreationDateTimestamp = await varDatabaseDbHandler({
|
const updateCreationDateTimestamp = await varDatabaseDbHandler({
|
||||||
queryString: `ALTER TABLE \`${table_slug}\` MODIFY COLUMN date_created_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP`,
|
queryString: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` MODIFY COLUMN date_created_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP`,
|
||||||
database: db_full_name,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const updateDateTimestamp = await varDatabaseDbHandler({
|
const updateDateTimestamp = await varDatabaseDbHandler({
|
||||||
queryString: `ALTER TABLE \`${table_slug}\` MODIFY COLUMN date_updated_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`,
|
queryString: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` MODIFY COLUMN date_updated_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`,
|
||||||
database: db_full_name,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log("Date Updated Column updated");
|
console.log("Date Updated Column updated");
|
||||||
|
@ -17,8 +17,7 @@ import DB_HANDLER from "../utils/backend/global-db/DB_HANDLER";
|
|||||||
* @description Grab Schema
|
* @description Grab Schema
|
||||||
*/
|
*/
|
||||||
varDatabaseDbHandler({
|
varDatabaseDbHandler({
|
||||||
queryString: `SELECT DISTINCT db_id FROM user_database_tables`,
|
queryString: `SELECT DISTINCT db_id FROM datasquirel.user_database_tables`,
|
||||||
database: "datasquirel",
|
|
||||||
}).then(async (tables) => {
|
}).then(async (tables) => {
|
||||||
// console.log(tables);
|
// console.log(tables);
|
||||||
// process.exit();
|
// process.exit();
|
||||||
|
@ -2,17 +2,6 @@ require("dotenv").config({ path: "./../.env" });
|
|||||||
import grabDbSSL from "../utils/backend/grabDbSSL";
|
import grabDbSSL from "../utils/backend/grabDbSSL";
|
||||||
import mysql from "serverless-mysql";
|
import mysql from "serverless-mysql";
|
||||||
|
|
||||||
const connection = mysql({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
database: process.env.DSQL_DB_NAME,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: grabDbSSL(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* # Main DB Handler Function
|
* # Main DB Handler Function
|
||||||
* @async
|
* @async
|
||||||
@ -25,11 +14,8 @@ const connection = mysql({
|
|||||||
* @returns {Promise<object|null>}
|
* @returns {Promise<object|null>}
|
||||||
*/
|
*/
|
||||||
(async () => {
|
(async () => {
|
||||||
/**
|
const connection = global.DSQL_DB_CONN;
|
||||||
* Switch Database
|
|
||||||
*
|
|
||||||
* @description If a database is provided, switch to it
|
|
||||||
*/
|
|
||||||
try {
|
try {
|
||||||
const result = await connection.query(
|
const result = await connection.query(
|
||||||
"SELECT user,host,ssl_type FROM mysql.user"
|
"SELECT user,host,ssl_type FROM mysql.user"
|
||||||
|
@ -8,10 +8,8 @@ type Param = {
|
|||||||
dbFullName: string;
|
dbFullName: string;
|
||||||
tableName: string;
|
tableName: string;
|
||||||
tableInfoArray: any[];
|
tableInfoArray: any[];
|
||||||
dbSchema?: DSQL_DatabaseSchemaType[];
|
|
||||||
tableSchema?: DSQL_TableSchemaType;
|
tableSchema?: DSQL_TableSchemaType;
|
||||||
recordedDbEntry?: any;
|
recordedDbEntry?: any;
|
||||||
clone?: boolean;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -21,8 +19,6 @@ export default async function createTable({
|
|||||||
dbFullName,
|
dbFullName,
|
||||||
tableName,
|
tableName,
|
||||||
tableInfoArray,
|
tableInfoArray,
|
||||||
dbSchema,
|
|
||||||
clone,
|
|
||||||
tableSchema,
|
tableSchema,
|
||||||
recordedDbEntry,
|
recordedDbEntry,
|
||||||
}: Param) {
|
}: Param) {
|
||||||
@ -40,7 +36,9 @@ export default async function createTable({
|
|||||||
*/
|
*/
|
||||||
const createTableQueryArray = [];
|
const createTableQueryArray = [];
|
||||||
|
|
||||||
createTableQueryArray.push(`CREATE TABLE IF NOT EXISTS \`${tableName}\` (`);
|
createTableQueryArray.push(
|
||||||
|
`CREATE TABLE IF NOT EXISTS \`${dbFullName}\`.\`${tableName}\` (`
|
||||||
|
);
|
||||||
|
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
@ -52,8 +50,7 @@ export default async function createTable({
|
|||||||
}
|
}
|
||||||
|
|
||||||
const existingTable = await varDatabaseDbHandler({
|
const existingTable = await varDatabaseDbHandler({
|
||||||
database: "datasquirel",
|
queryString: `SELECT * FROM datasquirel.user_database_tables WHERE db_id = ? AND table_slug = ?`,
|
||||||
queryString: `SELECT * FROM user_database_tables WHERE db_id = ? AND table_slug = ?`,
|
|
||||||
queryValuesArray: [recordedDbEntry.id, tableSchema?.tableName],
|
queryValuesArray: [recordedDbEntry.id, tableSchema?.tableName],
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -63,7 +60,7 @@ export default async function createTable({
|
|||||||
|
|
||||||
if (!table?.id) {
|
if (!table?.id) {
|
||||||
const newTableEntry = await dbHandler({
|
const newTableEntry = await dbHandler({
|
||||||
query: `INSERT INTO user_database_tables SET ?`,
|
query: `INSERT INTO datasquirel.user_database_tables SET ?`,
|
||||||
values: {
|
values: {
|
||||||
user_id: recordedDbEntry.user_id,
|
user_id: recordedDbEntry.user_id,
|
||||||
db_id: recordedDbEntry.id,
|
db_id: recordedDbEntry.id,
|
||||||
@ -80,7 +77,6 @@ export default async function createTable({
|
|||||||
date_updated: Date(),
|
date_updated: Date(),
|
||||||
date_updated_code: Date.now(),
|
date_updated_code: Date.now(),
|
||||||
},
|
},
|
||||||
database: "datasquirel",
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
@ -150,10 +146,6 @@ export default async function createTable({
|
|||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////
|
|
||||||
////////////////////////////////////////
|
|
||||||
////////////////////////////////////////
|
|
||||||
|
|
||||||
if (foreignKeys[0]) {
|
if (foreignKeys[0]) {
|
||||||
foreignKeys.forEach((foreighKey, index, array) => {
|
foreignKeys.forEach((foreighKey, index, array) => {
|
||||||
const fieldName = foreighKey.fieldName;
|
const fieldName = foreighKey.fieldName;
|
||||||
@ -190,18 +182,7 @@ export default async function createTable({
|
|||||||
|
|
||||||
const newTable = await varDatabaseDbHandler({
|
const newTable = await varDatabaseDbHandler({
|
||||||
queryString: createTableQuery,
|
queryString: createTableQuery,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return newTable;
|
return newTable;
|
||||||
|
|
||||||
////////////////////////////////////////
|
|
||||||
////////////////////////////////////////
|
|
||||||
////////////////////////////////////////
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
/** ****************************************************************************** */
|
|
||||||
|
@ -4,79 +4,29 @@ import path from "path";
|
|||||||
import mysql from "serverless-mysql";
|
import mysql from "serverless-mysql";
|
||||||
import grabDbSSL from "../../utils/backend/grabDbSSL";
|
import grabDbSSL from "../../utils/backend/grabDbSSL";
|
||||||
|
|
||||||
let connection = mysql({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
database: process.env.DSQL_DB_NAME,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: grabDbSSL(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
type Param = {
|
type Param = {
|
||||||
query: string;
|
query: string;
|
||||||
values?: string[] | object;
|
values?: string[] | object;
|
||||||
database?: string;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* # Main DB Handler Function
|
* # Main DB Handler Function
|
||||||
|
* @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database
|
||||||
*/
|
*/
|
||||||
export default async function dbHandler({
|
export default async function dbHandler({
|
||||||
query,
|
query,
|
||||||
values,
|
values,
|
||||||
database,
|
|
||||||
}: Param): Promise<any[] | object | null> {
|
}: Param): Promise<any[] | object | null> {
|
||||||
/**
|
let connection = global.DSQL_DB_CONN;
|
||||||
* Switch Database
|
|
||||||
*
|
|
||||||
* @description If a database is provided, switch to it
|
|
||||||
*/
|
|
||||||
let isDbCorrect = true;
|
|
||||||
|
|
||||||
if (database) {
|
|
||||||
connection = mysql({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
database: database,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: grabDbSSL(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isDbCorrect) {
|
|
||||||
console.log(
|
|
||||||
"Shell Db Handler ERROR in switching Database! Operation Failed!"
|
|
||||||
);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Declare variables
|
|
||||||
*
|
|
||||||
* @description Declare "results" variable
|
|
||||||
*/
|
|
||||||
let results;
|
let results;
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetch from db
|
|
||||||
*
|
|
||||||
* @description Fetch data from db if no cache
|
|
||||||
*/
|
|
||||||
try {
|
try {
|
||||||
if (query && values) {
|
if (query && values) {
|
||||||
results = await connection.query(query, values);
|
results = await connection.query(query, values);
|
||||||
} else {
|
} else {
|
||||||
results = await connection.query(query);
|
results = await connection.query(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** ********************* Clean up */
|
|
||||||
await connection.end();
|
|
||||||
} catch (/** @type {any} */ error: any) {
|
} catch (/** @type {any} */ error: any) {
|
||||||
if (process.env.FIRST_RUN) {
|
if (process.env.FIRST_RUN) {
|
||||||
return null;
|
return null;
|
||||||
@ -92,13 +42,10 @@ export default async function dbHandler({
|
|||||||
"utf8"
|
"utf8"
|
||||||
);
|
);
|
||||||
results = null;
|
results = null;
|
||||||
|
} finally {
|
||||||
|
await connection?.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Return results
|
|
||||||
*
|
|
||||||
* @description Return results add to cache if "req" param is passed
|
|
||||||
*/
|
|
||||||
if (results) {
|
if (results) {
|
||||||
return JSON.parse(JSON.stringify(results));
|
return JSON.parse(JSON.stringify(results));
|
||||||
} else {
|
} else {
|
||||||
|
@ -75,7 +75,9 @@ export default async function updateTable({
|
|||||||
/**
|
/**
|
||||||
* @description Push the query initial value
|
* @description Push the query initial value
|
||||||
*/
|
*/
|
||||||
updateTableQueryArray.push(`ALTER TABLE \`${tableName}\``);
|
updateTableQueryArray.push(
|
||||||
|
`ALTER TABLE \`${dbFullName}\`.\`${tableName}\``
|
||||||
|
);
|
||||||
|
|
||||||
if (childDb) {
|
if (childDb) {
|
||||||
try {
|
try {
|
||||||
@ -84,8 +86,7 @@ export default async function updateTable({
|
|||||||
}
|
}
|
||||||
|
|
||||||
const existingTable = await varDatabaseDbHandler({
|
const existingTable = await varDatabaseDbHandler({
|
||||||
database: "datasquirel",
|
queryString: `SELECT * FROM datasquirel.user_database_tables WHERE db_id = ? AND table_slug = ?`,
|
||||||
queryString: `SELECT * FROM user_database_tables WHERE db_id = ? AND table_slug = ?`,
|
|
||||||
queryValuesArray: [recordedDbEntry.id, tableName],
|
queryValuesArray: [recordedDbEntry.id, tableName],
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -95,7 +96,7 @@ export default async function updateTable({
|
|||||||
|
|
||||||
if (!table?.id) {
|
if (!table?.id) {
|
||||||
const newTableEntry = await dbHandler({
|
const newTableEntry = await dbHandler({
|
||||||
query: `INSERT INTO user_database_tables SET ?`,
|
query: `INSERT INTO datasquirel.user_database_tables SET ?`,
|
||||||
values: {
|
values: {
|
||||||
user_id: recordedDbEntry.user_id,
|
user_id: recordedDbEntry.user_id,
|
||||||
db_id: recordedDbEntry.id,
|
db_id: recordedDbEntry.id,
|
||||||
@ -112,7 +113,6 @@ export default async function updateTable({
|
|||||||
date_updated: Date(),
|
date_updated: Date(),
|
||||||
date_updated_code: Date.now(),
|
date_updated_code: Date.now(),
|
||||||
},
|
},
|
||||||
database: "datasquirel",
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
@ -124,8 +124,7 @@ export default async function updateTable({
|
|||||||
*/ // @ts-ignore
|
*/ // @ts-ignore
|
||||||
const allExistingIndexes: import("../../types").DSQL_MYSQL_SHOW_INDEXES_Type[] =
|
const allExistingIndexes: import("../../types").DSQL_MYSQL_SHOW_INDEXES_Type[] =
|
||||||
await varDatabaseDbHandler({
|
await varDatabaseDbHandler({
|
||||||
queryString: `SHOW INDEXES FROM \`${tableName}\``,
|
queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -134,8 +133,7 @@ export default async function updateTable({
|
|||||||
*/ // @ts-ignore
|
*/ // @ts-ignore
|
||||||
const allExistingColumns: import("../../types").DSQL_MYSQL_SHOW_COLUMNS_Type[] =
|
const allExistingColumns: import("../../types").DSQL_MYSQL_SHOW_COLUMNS_Type[] =
|
||||||
await varDatabaseDbHandler({
|
await varDatabaseDbHandler({
|
||||||
queryString: `SHOW COLUMNS FROM \`${tableName}\``,
|
queryString: `SHOW COLUMNS FROM \`${dbFullName}\`.\`${tableName}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
@ -174,8 +172,7 @@ export default async function updateTable({
|
|||||||
updatedColumnsArray.push(existingEntry[0].fieldName);
|
updatedColumnsArray.push(existingEntry[0].fieldName);
|
||||||
|
|
||||||
const renameColumn = await varDatabaseDbHandler({
|
const renameColumn = await varDatabaseDbHandler({
|
||||||
queryString: `ALTER TABLE ${tableName} RENAME COLUMN \`${existingEntry[0].originName}\` TO \`${existingEntry[0].fieldName}\``,
|
queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` RENAME COLUMN \`${existingEntry[0].originName}\` TO \`${existingEntry[0].fieldName}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
@ -241,8 +238,7 @@ export default async function updateTable({
|
|||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
} else {
|
} else {
|
||||||
await varDatabaseDbHandler({
|
await varDatabaseDbHandler({
|
||||||
queryString: `ALTER TABLE ${tableName} DROP COLUMN \`${Field}\``,
|
queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP COLUMN \`${Field}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -275,8 +271,7 @@ export default async function updateTable({
|
|||||||
* present in the datasquirel DB schema
|
* present in the datasquirel DB schema
|
||||||
*/
|
*/
|
||||||
await varDatabaseDbHandler({
|
await varDatabaseDbHandler({
|
||||||
queryString: `ALTER TABLE ${tableName} DROP INDEX \`${Key_name}\``,
|
queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${Key_name}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -312,11 +307,10 @@ export default async function updateTable({
|
|||||||
await varDatabaseDbHandler({
|
await varDatabaseDbHandler({
|
||||||
queryString: `CREATE${
|
queryString: `CREATE${
|
||||||
indexType?.match(/fullText/i) ? " FULLTEXT" : ""
|
indexType?.match(/fullText/i) ? " FULLTEXT" : ""
|
||||||
} INDEX \`${alias}\` ON ${tableName}(${indexTableFields
|
} INDEX \`${alias}\` ON \`${dbFullName}\`.\`${tableName}\`(${indexTableFields
|
||||||
?.map((nm) => nm.value)
|
?.map((nm) => nm.value)
|
||||||
.map((nm) => `\`${nm}\``)
|
.map((nm) => `\`${nm}\``)
|
||||||
.join(",")}) COMMENT 'schema_index'`,
|
.join(",")}) COMMENT 'schema_index'`,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -332,12 +326,11 @@ export default async function updateTable({
|
|||||||
/**
|
/**
|
||||||
* @description All MSQL Foreign Keys
|
* @description All MSQL Foreign Keys
|
||||||
* @type {import("../../types").DSQL_MYSQL_FOREIGN_KEYS_Type[] | null}
|
* @type {import("../../types").DSQL_MYSQL_FOREIGN_KEYS_Type[] | null}
|
||||||
*/ // @ts-ignore
|
*/
|
||||||
const allForeignKeys:
|
const allForeignKeys:
|
||||||
| import("../../types").DSQL_MYSQL_FOREIGN_KEYS_Type[]
|
| import("../../types").DSQL_MYSQL_FOREIGN_KEYS_Type[]
|
||||||
| null = await varDatabaseDbHandler({
|
| null = await varDatabaseDbHandler({
|
||||||
queryString: `SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = '${dbFullName}' AND TABLE_NAME='${tableName}' AND CONSTRAINT_TYPE='FOREIGN KEY'`,
|
queryString: `SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = '${dbFullName}' AND TABLE_NAME='${tableName}' AND CONSTRAINT_TYPE='FOREIGN KEY'`,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (allForeignKeys) {
|
if (allForeignKeys) {
|
||||||
@ -354,8 +347,7 @@ export default async function updateTable({
|
|||||||
* Foreign keys
|
* Foreign keys
|
||||||
*/
|
*/
|
||||||
const dropForeignKey = await varDatabaseDbHandler({
|
const dropForeignKey = await varDatabaseDbHandler({
|
||||||
queryString: `ALTER TABLE ${tableName} DROP FOREIGN KEY \`${CONSTRAINT_NAME}\``,
|
queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP FOREIGN KEY \`${CONSTRAINT_NAME}\``,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -500,10 +492,9 @@ export default async function updateTable({
|
|||||||
}${cascadeUpdate ? " ON UPDATE CASCADE" : ""}`;
|
}${cascadeUpdate ? " ON UPDATE CASCADE" : ""}`;
|
||||||
// const foreinKeyText = `ADD CONSTRAINT \`${foreignKeyName}\` FOREIGN KEY (${fieldName}) REFERENCES ${destinationTableName}(${destinationTableColumnName})${cascadeDelete ? " ON DELETE CASCADE" : ""}${cascadeUpdate ? " ON UPDATE CASCADE" : ""}` + ",";
|
// const foreinKeyText = `ADD CONSTRAINT \`${foreignKeyName}\` FOREIGN KEY (${fieldName}) REFERENCES ${destinationTableName}(${destinationTableColumnName})${cascadeDelete ? " ON DELETE CASCADE" : ""}${cascadeUpdate ? " ON UPDATE CASCADE" : ""}` + ",";
|
||||||
|
|
||||||
const finalQueryString = `ALTER TABLE \`${tableName}\` ${foreinKeyText}`;
|
const finalQueryString = `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` ${foreinKeyText}`;
|
||||||
|
|
||||||
const addForeignKey = await varDatabaseDbHandler({
|
const addForeignKey = await varDatabaseDbHandler({
|
||||||
database: dbFullName,
|
|
||||||
queryString: finalQueryString,
|
queryString: finalQueryString,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -533,7 +524,6 @@ export default async function updateTable({
|
|||||||
if (updateTableQueryArray.length > 1) {
|
if (updateTableQueryArray.length > 1) {
|
||||||
const updateTable = await varDatabaseDbHandler({
|
const updateTable = await varDatabaseDbHandler({
|
||||||
queryString: updateTableQuery,
|
queryString: updateTableQuery,
|
||||||
database: dbFullName,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return updateTable;
|
return updateTable;
|
||||||
|
@ -4,8 +4,6 @@ import { DSQL_TableSchemaType } from "../../types";
|
|||||||
type Param = {
|
type Param = {
|
||||||
queryString: string;
|
queryString: string;
|
||||||
queryValuesArray?: string[];
|
queryValuesArray?: string[];
|
||||||
database?: string;
|
|
||||||
tableSchema?: DSQL_TableSchemaType;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14,8 +12,6 @@ type Param = {
|
|||||||
export default async function varDatabaseDbHandler({
|
export default async function varDatabaseDbHandler({
|
||||||
queryString,
|
queryString,
|
||||||
queryValuesArray,
|
queryValuesArray,
|
||||||
database,
|
|
||||||
tableSchema,
|
|
||||||
}: Param): Promise<any> {
|
}: Param): Promise<any> {
|
||||||
/**
|
/**
|
||||||
* Declare variables
|
* Declare variables
|
||||||
@ -39,12 +35,10 @@ export default async function varDatabaseDbHandler({
|
|||||||
results = await dbHandler({
|
results = await dbHandler({
|
||||||
query: queryString,
|
query: queryString,
|
||||||
values: queryValuesArray,
|
values: queryValuesArray,
|
||||||
database,
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
results = await dbHandler({
|
results = await dbHandler({
|
||||||
query: queryString,
|
query: queryString,
|
||||||
database,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1067,11 +1067,7 @@ export type FetchApiOptions = RequestInit & {
|
|||||||
query?: { [key: string]: any };
|
query?: { [key: string]: any };
|
||||||
};
|
};
|
||||||
|
|
||||||
export type AuthCsrfHeaderName = "x-csrf-auth";
|
|
||||||
|
|
||||||
type FetchHeader = HeadersInit & {
|
type FetchHeader = HeadersInit & {
|
||||||
[key in AuthCsrfHeaderName]?: string | null;
|
|
||||||
} & {
|
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,29 +1,15 @@
|
|||||||
import mysql from "serverless-mysql";
|
|
||||||
import grabDbSSL from "../grabDbSSL";
|
|
||||||
|
|
||||||
const MASTER = mysql({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
database: process.env.DSQL_DB_NAME,
|
|
||||||
port: process.env.DSQL_DB_PORT
|
|
||||||
? Number(process.env.DSQL_DB_PORT)
|
|
||||||
: undefined,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
// ssl: grabDbSSL(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* # DSQL user read-only DB handler
|
* # DSQL user read-only DB handler
|
||||||
|
* @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database
|
||||||
*/
|
*/
|
||||||
export default async function DB_HANDLER(...args: any[]) {
|
export default async function DB_HANDLER(...args: any[]) {
|
||||||
try {
|
const CONNECTION = global.DSQL_DB_CONN;
|
||||||
const results = await MASTER.query(...args);
|
|
||||||
|
|
||||||
/** ********************* Clean up */
|
try {
|
||||||
await MASTER.end();
|
if (!CONNECTION)
|
||||||
|
throw new Error("No Connection provided to DB_HANDLER function!");
|
||||||
|
|
||||||
|
const results = await CONNECTION.query(...args);
|
||||||
|
|
||||||
return JSON.parse(JSON.stringify(results));
|
return JSON.parse(JSON.stringify(results));
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
@ -32,5 +18,7 @@ export default async function DB_HANDLER(...args: any[]) {
|
|||||||
success: false,
|
success: false,
|
||||||
error: error.message,
|
error: error.message,
|
||||||
};
|
};
|
||||||
|
} finally {
|
||||||
|
await CONNECTION?.end();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,24 +1,7 @@
|
|||||||
// @ts-check
|
import connDbHandler from "../../db/conn-db-handler";
|
||||||
|
|
||||||
import fs from "fs";
|
|
||||||
import path from "path";
|
|
||||||
|
|
||||||
import mysql from "serverless-mysql";
|
|
||||||
import grabDbSSL from "../grabDbSSL";
|
|
||||||
|
|
||||||
let DSQL_USER = mysql({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_READ_ONLY_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_READ_ONLY_PASSWORD,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: grabDbSSL(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
type Param = {
|
type Param = {
|
||||||
paradigm: "Full Access" | "FA" | "Read Only";
|
paradigm: "Full Access" | "FA" | "Read Only";
|
||||||
database: string;
|
|
||||||
queryString: string;
|
queryString: string;
|
||||||
queryValues?: string[];
|
queryValues?: string[];
|
||||||
};
|
};
|
||||||
@ -26,97 +9,127 @@ type Param = {
|
|||||||
/**
|
/**
|
||||||
* # DSQL user read-only DB handler
|
* # DSQL user read-only DB handler
|
||||||
*/
|
*/
|
||||||
export default function DSQL_USER_DB_HANDLER({
|
export default async function DSQL_USER_DB_HANDLER({
|
||||||
paradigm,
|
paradigm,
|
||||||
database,
|
|
||||||
queryString,
|
queryString,
|
||||||
queryValues,
|
queryValues,
|
||||||
}: Param) {
|
}: Param) {
|
||||||
try {
|
try {
|
||||||
return new Promise((resolve, reject) => {
|
switch (paradigm) {
|
||||||
const fullAccess = paradigm?.match(/full.access|^fa$/i)
|
case "Read Only":
|
||||||
? true
|
return await connDbHandler(
|
||||||
: false;
|
global.DSQL_READ_ONLY_DB_CONN,
|
||||||
|
queryString,
|
||||||
try {
|
queryValues
|
||||||
if (fullAccess) {
|
|
||||||
DSQL_USER = mysql({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_FULL_ACCESS_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_FULL_ACCESS_PASSWORD,
|
|
||||||
database: database,
|
|
||||||
ssl: grabDbSSL(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
DSQL_USER = mysql({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_READ_ONLY_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_READ_ONLY_PASSWORD,
|
|
||||||
database: database,
|
|
||||||
ssl: grabDbSSL(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ### Run query Function
|
|
||||||
* @param {any} results
|
|
||||||
*/
|
|
||||||
function runQuery(results: any) {
|
|
||||||
DSQL_USER.end();
|
|
||||||
resolve(JSON.parse(JSON.stringify(results)));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ### Query Error
|
|
||||||
* @param {any} err
|
|
||||||
*/
|
|
||||||
function queryError(err: any) {
|
|
||||||
DSQL_USER.end();
|
|
||||||
resolve({
|
|
||||||
error: err.message,
|
|
||||||
queryStringGenerated: queryString,
|
|
||||||
queryValuesGenerated: queryValues,
|
|
||||||
sql: err.sql,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
queryValues &&
|
|
||||||
Array.isArray(queryValues) &&
|
|
||||||
queryValues[0]
|
|
||||||
) {
|
|
||||||
DSQL_USER.query(queryString, queryValues)
|
|
||||||
.then(runQuery)
|
|
||||||
.catch(queryError);
|
|
||||||
} else {
|
|
||||||
DSQL_USER.query(queryString)
|
|
||||||
.then(runQuery)
|
|
||||||
.catch(queryError);
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////
|
|
||||||
} catch (/** @type {any} */ error: any) {
|
|
||||||
////////////////////////////////////////
|
|
||||||
|
|
||||||
fs.appendFileSync(
|
|
||||||
"./.tmp/dbErrorLogs.txt",
|
|
||||||
error.message + "\n" + Date() + "\n\n\n",
|
|
||||||
"utf8"
|
|
||||||
);
|
);
|
||||||
|
|
||||||
resolve({
|
case "Full Access":
|
||||||
error: error.message,
|
return await connDbHandler(
|
||||||
});
|
global.DSQL_FULL_ACCESS_DB_CONN,
|
||||||
}
|
queryString,
|
||||||
});
|
queryValues
|
||||||
} catch (/** @type {any} */ error: any) {
|
);
|
||||||
return {
|
|
||||||
success: false,
|
case "FA":
|
||||||
error: error.message,
|
return await connDbHandler(
|
||||||
};
|
global.DSQL_FULL_ACCESS_DB_CONN,
|
||||||
|
queryString,
|
||||||
|
queryValues
|
||||||
|
);
|
||||||
|
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
} catch (error: any) {
|
||||||
|
console.log(`DSQL_USER_DB_HANDLER Error: ${error.message}`);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// return new Promise((resolve, reject) => {
|
||||||
|
// const fullAccess = paradigm?.match(/full.access|^fa$/i)
|
||||||
|
// ? true
|
||||||
|
// : false;
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// if (fullAccess) {
|
||||||
|
// DSQL_USER = mysql({
|
||||||
|
// config: {
|
||||||
|
// host: process.env.DSQL_DB_HOST,
|
||||||
|
// user: process.env.DSQL_DB_FULL_ACCESS_USERNAME,
|
||||||
|
// password: process.env.DSQL_DB_FULL_ACCESS_PASSWORD,
|
||||||
|
// database: database,
|
||||||
|
// ssl: grabDbSSL(),
|
||||||
|
// },
|
||||||
|
// });
|
||||||
|
// } else {
|
||||||
|
// DSQL_USER = mysql({
|
||||||
|
// config: {
|
||||||
|
// host: process.env.DSQL_DB_HOST,
|
||||||
|
// user: process.env.DSQL_DB_READ_ONLY_USERNAME,
|
||||||
|
// password: process.env.DSQL_DB_READ_ONLY_PASSWORD,
|
||||||
|
// database: database,
|
||||||
|
// ssl: grabDbSSL(),
|
||||||
|
// },
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * ### Run query Function
|
||||||
|
// * @param {any} results
|
||||||
|
// */
|
||||||
|
// function runQuery(results: any) {
|
||||||
|
// DSQL_USER.end();
|
||||||
|
// resolve(JSON.parse(JSON.stringify(results)));
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * ### Query Error
|
||||||
|
// * @param {any} err
|
||||||
|
// */
|
||||||
|
// function queryError(err: any) {
|
||||||
|
// DSQL_USER.end();
|
||||||
|
// resolve({
|
||||||
|
// error: err.message,
|
||||||
|
// queryStringGenerated: queryString,
|
||||||
|
// queryValuesGenerated: queryValues,
|
||||||
|
// sql: err.sql,
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (
|
||||||
|
// queryValues &&
|
||||||
|
// Array.isArray(queryValues) &&
|
||||||
|
// queryValues[0]
|
||||||
|
// ) {
|
||||||
|
// DSQL_USER.query(queryString, queryValues)
|
||||||
|
// .then(runQuery)
|
||||||
|
// .catch(queryError);
|
||||||
|
// } else {
|
||||||
|
// DSQL_USER.query(queryString)
|
||||||
|
// .then(runQuery)
|
||||||
|
// .catch(queryError);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// ////////////////////////////////////////
|
||||||
|
// } catch (/** @type {any} */ error: any) {
|
||||||
|
// ////////////////////////////////////////
|
||||||
|
|
||||||
|
// fs.appendFileSync(
|
||||||
|
// "./.tmp/dbErrorLogs.txt",
|
||||||
|
// error.message + "\n" + Date() + "\n\n\n",
|
||||||
|
// "utf8"
|
||||||
|
// );
|
||||||
|
|
||||||
|
// resolve({
|
||||||
|
// error: error.message,
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// } catch (/** @type {any} */ error: any) {
|
||||||
|
// return {
|
||||||
|
// success: false,
|
||||||
|
// error: error.message,
|
||||||
|
// };
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,12 @@
|
|||||||
import mysql from "serverless-mysql";
|
import mysql from "serverless-mysql";
|
||||||
import grabDbSSL from "../grabDbSSL";
|
import grabDbSSL from "../grabDbSSL";
|
||||||
|
|
||||||
let NO_DB = mysql({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: grabDbSSL(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* # DSQL user read-only DB handler
|
* # DSQL user read-only DB handler
|
||||||
*/
|
*/
|
||||||
export default function NO_DB_HANDLER(...args: any[]) {
|
export default function NO_DB_HANDLER(...args: any[]) {
|
||||||
|
const NO_DB = global.DSQL_DB_CONN;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
NO_DB.query(...args)
|
NO_DB.query(...args)
|
||||||
|
@ -1,22 +1,9 @@
|
|||||||
// @ts-check
|
|
||||||
|
|
||||||
import mysql from "serverless-mysql";
|
|
||||||
import grabDbSSL from "../grabDbSSL";
|
|
||||||
|
|
||||||
let NO_DB = mysql({
|
|
||||||
config: {
|
|
||||||
host: process.env.DSQL_DB_HOST,
|
|
||||||
user: process.env.DSQL_DB_USERNAME,
|
|
||||||
password: process.env.DSQL_DB_PASSWORD,
|
|
||||||
charset: "utf8mb4",
|
|
||||||
ssl: grabDbSSL(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* # Root DB handler
|
* # Root DB handler
|
||||||
*/
|
*/
|
||||||
export default function ROOT_DB_HANDLER(...args: any[]) {
|
export default function ROOT_DB_HANDLER(...args: any[]) {
|
||||||
|
const NO_DB = global.DSQL_DB_CONN;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
NO_DB.query(...args)
|
NO_DB.query(...args)
|
||||||
|
@ -25,5 +25,8 @@ export default function grabDbSSL(): Return {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
ca: fs.readFileSync(`${SSL_DIR}/ca-cert.pem`),
|
ca: fs.readFileSync(`${SSL_DIR}/ca-cert.pem`),
|
||||||
|
// key: fs.readFileSync(`${SSL_DIR}/client-key.pem`),
|
||||||
|
// cert: fs.readFileSync(`${SSL_DIR}/client-cert.pem`),
|
||||||
|
rejectUnauthorized: false,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@moduletrace/datasquirel",
|
"name": "@moduletrace/datasquirel",
|
||||||
"version": "3.4.2",
|
"version": "3.4.3",
|
||||||
"description": "Cloud-based SQL data management tool",
|
"description": "Cloud-based SQL data management tool",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
@ -91,8 +91,5 @@ export default async function getSchema({
|
|||||||
.end();
|
.end();
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return httpResponse as GetSchemaReturn;
|
||||||
success: true,
|
|
||||||
payload: httpResponse as any,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user