orm and profile first implementation

This commit is contained in:
Stanislaw
2022-04-20 15:20:22 +02:00
parent 4f11342db8
commit f308503816
14 changed files with 597 additions and 265 deletions

View File

@@ -1,36 +1,59 @@
const { lvl } = require("./tools");
const { lvl, randomExp } = require("./tools");
module.exports = {
messageCount: async function (connect, userID) {
query = `UPDATE users SET msg_count = msg_count + 1 WHERE users.user_id = '${userID}'`;
await connect.query(query);
const update = await connect.users.update({
where: {
user_id: userID,
},
data: {
msg_count: {
increment: 1,
},
},
});
return update;
},
addExp: async function (connect, userID) {
let query = `SELECT users.user_id, users.exp FROM users WHERE users.user_id = '${userID}'`;
const check = await connect.query(query);
if (check.rowCount == 0) {
query = `INSERT INTO users(user_id,msg_count,exp) VALUES ('${userID}',1,${Math.floor(
Math.random() * 25
)})`;
await connect.query(query);
} else {
let exp = check.rows[0].exp + Math.floor(Math.random() * 25);
console.debug(lvl(exp));
query =
query = `UPDATE users SET exp = ${exp},msg_count = msg_count + 1,lvl = ${lvl(
exp
)} WHERE users.user_id = '${userID}'`;
await connect.query(query);
}
profile: async function (connect, userID) {
return await connect.users.findUnique({
where: {
user_id: userID,
},
});
},
profil: async function (connect, userID) {
let query = `SELECT * FROM users WHERE users.user_id = '${userID}'`;
const check = await connect.query(query);
if (check.rowCount == 0) {
query = `INSERT INTO users(user_id) VALUES ('${userID}')`;
await connect.query(query);
}
return check.rows;
addExp: async function (connect, userID, min, max) {
const rExp = randomExp(min, max);
return await connect.users.upsert({
where: {
user_id: userID,
},
create: {
user_id: userID,
msg_count: 1,
exp: randomExp(min, max),
lvl: 0,
},
update: {
msg_count: {
increment: 1,
},
exp: {
increment: rExp,
},
lvl: lvl(
(
await connect.users.findUnique({
where: {
user_id: userID,
},
select: {
exp: true,
},
})
).exp + rExp
),
},
});
},
addBadge: async function (args) {},
giveBadge: async function (args) {},

View File

@@ -2,4 +2,22 @@ module.exports = {
lvl: function (exp) {
return Math.floor(Math.sqrt(exp) / 5);
},
expThreshold: function (lvl) {
return Math.floor(lvl * lvl * 25);
},
randomExp: function (min, max) {
return Math.floor(Math.random() * (max - min)) + min;
},
roundRect: function (ctx, x, y, width, height, radius) {
if (width < 2 * radius) radius = width / 2;
if (height < 2 * radius) radius = height / 2;
ctx.beginPath();
ctx.moveTo(x + radius, y);
ctx.arcTo(x + width, y, x + width, y + height, radius);
ctx.arcTo(x + width, y + height, x, y + height, radius);
ctx.arcTo(x, y + height, x, y, radius);
ctx.arcTo(x, y, x + width, y, radius);
ctx.closePath();
return ctx;
},
};