🗃️ migrated saving stricture to prisma
This commit is contained in:
parent
0d9bbced2d
commit
ca6a209376
4 changed files with 43 additions and 8 deletions
1
.env
Normal file
1
.env
Normal file
|
@ -0,0 +1 @@
|
|||
DATABASE_URL="file:./dev.db"
|
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -1,2 +1,5 @@
|
|||
node_modules/
|
||||
website.js
|
||||
website.js
|
||||
prisma/*.db
|
||||
prisma/*.db-journal
|
||||
prisma/migrations/
|
28
app.js
28
app.js
|
@ -10,27 +10,33 @@ const { graphqlHTTP } = require('express-graphql');
|
|||
const { buildSchema } = require('graphql');
|
||||
const NodeCache = require("node-cache");
|
||||
const jp = require('jsonpath');
|
||||
const { PrismaClient } = require('@prisma/client');
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
// set up things
|
||||
const cache = new NodeCache({ stdTTL: config.checkperiod * 3 });
|
||||
|
||||
let schema = buildSchema(`
|
||||
type Query {
|
||||
|
||||
isOpen(id: String): Boolean
|
||||
}
|
||||
`);
|
||||
|
||||
let root = {
|
||||
|
||||
sisOpen({ id }) {
|
||||
let open = cache.get(id);
|
||||
return { open };
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
let app = express();
|
||||
app.use('/json', express.json());
|
||||
/*
|
||||
app.use('/graphql', graphqlHTTP({
|
||||
|
||||
schema: schema,
|
||||
rootValue: root,
|
||||
graphiql: true,
|
||||
}));
|
||||
*/
|
||||
|
||||
app.listen(4000);
|
||||
|
||||
// CHECK LOOP
|
||||
(async function () {
|
||||
|
@ -40,6 +46,14 @@ app.use('/graphql', graphqlHTTP({
|
|||
console.log(`Checking ${space.id}...`);
|
||||
let o = await checkSpace(space);
|
||||
console.log(`Space ${space.id} is ${o ? "open" : "closed"}`);
|
||||
if (o !== cache.get(space.id)) {
|
||||
cache.set(space.id, o);
|
||||
let update = await prisma.space.upsert({
|
||||
where: { id: space.id },
|
||||
update: { open: o },
|
||||
create: { id: space.id, open: o }
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
|
17
prisma/schema.prisma
Normal file
17
prisma/schema.prisma
Normal file
|
@ -0,0 +1,17 @@
|
|||
// 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 Space {
|
||||
id String @id
|
||||
open Boolean
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
Loading…
Reference in a new issue