orm and profile first implementation
This commit is contained in:
@@ -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) {},
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user