megis economy command, prisma database, prettier

This commit is contained in:
Joonas 2023-02-08 16:42:25 +02:00
parent 7133abda87
commit 4c9832f56d
7 changed files with 147 additions and 4 deletions

3
.gitignore vendored
View File

@ -1,2 +1,3 @@
node_modules
ecosystem.config.js
ecosystem.config.js
prisma/dev.db

14
clients/prisma.js Normal file
View File

@ -0,0 +1,14 @@
const { PrismaClient } = require("@prisma/client")
let prisma;
if (process.env.NODE_ENV === "production") {
prisma = new PrismaClient();
} else {
if (!global.prisma) {
global.prisma = new PrismaClient();
}
prisma = global.prisma;
}
module.exports = prisma;

53
commands/megis.js Normal file
View File

@ -0,0 +1,53 @@
const prisma = require("../clients/prisma");
const megisTypes = {
0: "bcaa megis PoroSad",
7: "lemon sugar free megis BroBalt",
15: "sugar free megis! PogChamp",
30: "normal megis!!! AngelThump",
};
const command = {
name: "megis",
desc: "economy command: get megis once per hour",
restricted: false,
mod: false,
run: async (client, msg) => {
const megis =
Object.keys(megisTypes)[
Math.floor(Math.random() * Object.keys(megisTypes).length)
];
const user = await prisma.user.upsert({
where: {
userId: msg.senderUserID,
},
update: {
megis: {
update: {
megis: {
increment: parseInt(megis),
},
},
},
},
create: {
userId: msg.senderUserID,
megis: {
create: {
megis: parseInt(megis),
},
},
},
include: {
megis: true,
},
});
await client.say(
msg.channelName,
`${msg.displayName}, +${megis}! ${megisTypes[megis]} Total megis: ${user.megis.megis}`
);
},
};
module.exports = { command };

View File

@ -10,11 +10,14 @@
"author": "",
"license": "ISC",
"dependencies": {
"@prisma/client": "^4.10.0",
"dank-twitch-irc": "^4.3.0",
"express": "^4.18.2"
"express": "^4.18.2",
"prettier": "^2.8.4"
},
"devDependencies": {
"eslint": "^8.33.0",
"eslint-plugin-react": "^7.32.2"
"eslint-plugin-react": "^7.32.2",
"prisma": "^4.10.0"
}
}

View File

@ -1,18 +1,24 @@
lockfileVersion: 5.4
specifiers:
'@prisma/client': ^4.10.0
dank-twitch-irc: ^4.3.0
eslint: ^8.33.0
eslint-plugin-react: ^7.32.2
express: ^4.18.2
prettier: ^2.8.4
prisma: ^4.10.0
dependencies:
'@prisma/client': 4.10.0_prisma@4.10.0
dank-twitch-irc: 4.3.0
express: 4.18.2
prettier: 2.8.4
devDependencies:
eslint: 8.33.0
eslint-plugin-react: 7.32.2_eslint@8.33.0
prisma: 4.10.0
packages:
@ -74,6 +80,28 @@ packages:
fastq: 1.15.0
dev: true
/@prisma/client/4.10.0_prisma@4.10.0:
resolution: {integrity: sha512-sBmYb1S6SMKFIESaLMfKqWSalv3pH73cMCsFt9HslJvYjIIcKQCA6PDL2O4SZGWvc4JBef9cg5Gd7d9x3AtKjw==}
engines: {node: '>=14.17'}
requiresBuild: true
peerDependencies:
prisma: '*'
peerDependenciesMeta:
prisma:
optional: true
dependencies:
'@prisma/engines-version': 4.10.0-84.ca7fcef713137fa11029d519a9780db130cca91d
prisma: 4.10.0
dev: false
/@prisma/engines-version/4.10.0-84.ca7fcef713137fa11029d519a9780db130cca91d:
resolution: {integrity: sha512-UVpmVlvSaGfY4ue+hh8CTkIesbuXCFUfrr8zk//+u85WwkKfWMtt6nLB2tNSzR1YO8eAA8+HqNf8LM7mnXIq5w==}
dev: false
/@prisma/engines/4.10.0:
resolution: {integrity: sha512-ZPPo7q+nQZdTlPFedS7mFXPE3oZ2kWtTh3GO4sku0XQ8ikLqEyinuTPJbQCw/8qel2xglIEQicsK6yI4Jgh20A==}
requiresBuild: true
/@types/debug/4.1.7:
resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==}
dependencies:
@ -1290,6 +1318,20 @@ packages:
engines: {node: '>= 0.8.0'}
dev: true
/prettier/2.8.4:
resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==}
engines: {node: '>=10.13.0'}
hasBin: true
dev: false
/prisma/4.10.0:
resolution: {integrity: sha512-xUHcF3Glc8QGgW8x0rfPITvyyTo04fskUdG7pI4kQbvDX/rhzDP4046x/FvazYqYHXMLR5/KTIi2p2Gth5vKOQ==}
engines: {node: '>=14.17'}
hasBin: true
requiresBuild: true
dependencies:
'@prisma/engines': 4.10.0
/prop-types/15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
dependencies:

30
prisma/schema.prisma Normal file
View File

@ -0,0 +1,30 @@
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model User {
id String @id @default(uuid())
userId String @unique
megis Megis?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Megis {
id String @id @default(uuid())
User User @relation(fields: [userId], references: [id])
userId String @unique
megis Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

View File

@ -19,5 +19,5 @@ app.get("*", (req, res) => {
});
app.listen(port, () => {
console.log(`Example app listening on port ${port}`);
console.log(`Front end listening on port ${port}`);
});