62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
import { MongoClient } from 'mongodb'
|
|
|
|
main()
|
|
|
|
async function main() {
|
|
const client = await connectToDatabase()
|
|
const newPatch = await fetchLatestPatch()
|
|
|
|
console.log('Latest patch is: ' + newPatch)
|
|
|
|
const newDate = new Date()
|
|
if (!(await compareLatestSavedPatch(client, newPatch, newDate))) {
|
|
downloadAssets()
|
|
}
|
|
|
|
await client.close()
|
|
}
|
|
|
|
async function fetchLatestPatch() {
|
|
const url = 'https://ddragon.leagueoflegends.com/api/versions.json'
|
|
const patchDataResponse = await fetch(url)
|
|
const patchData = await patchDataResponse.json()
|
|
const patch: string = patchData[0]
|
|
return patch
|
|
}
|
|
|
|
async function connectToDatabase() {
|
|
// Create a MongoClient with a MongoClientOptions object to set the Stable API version
|
|
let uri = `mongodb://${process.env.MONGO_USER}:${process.env.MONGO_PASS}@${process.env.MONGO_HOST}`
|
|
if (
|
|
process.env.MONGO_URI != undefined &&
|
|
process.env.MONGO_URI != null &&
|
|
process.env.MONGO_URI != ''
|
|
) {
|
|
uri = process.env.MONGO_URI
|
|
}
|
|
const client = new MongoClient(uri)
|
|
await client.connect()
|
|
return client
|
|
}
|
|
|
|
async function compareLatestSavedPatch(client: MongoClient, newPatch: string, newDate: Date) {
|
|
const database = client.db('patches')
|
|
const patches = database.collection('patches')
|
|
const latestPatch = await patches.find().limit(1).sort({ date: -1 }).next()
|
|
|
|
if (latestPatch == null) {
|
|
console.log('No previous patch recorded in database.')
|
|
} else {
|
|
console.log('Latest patch in database is: ' + latestPatch.patch)
|
|
}
|
|
|
|
if (latestPatch == null || latestPatch.patch != newPatch) {
|
|
await patches.insertOne({ patch: newPatch, date: newDate })
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
async function downloadAssets() {}
|