💻 | Working on API

This commit is contained in:
2021-04-05 17:14:57 +02:00
parent 4483e9139e
commit 933109aceb
29 changed files with 201 additions and 463 deletions

View File

@@ -13,13 +13,6 @@ export default class LocationsController {
})
}
public async history ({ response }: HttpContextContract) {
const locations = await Location.query().orderBy('since', 'desc')
return response.status(200).send({
locations
})
}
public async add ({ request, response }: HttpContextContract) {
const data = await request.validate(LocationValidator)
await Location.create(data)

View File

@@ -1,74 +0,0 @@
import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext'
import Post from "App/Models/Post";
import Redis from "@ioc:Adonis/Addons/Redis";
export default class PostsController {
public async getLikes ({params}: HttpContextContract) {
let post = await Post.findBy('slug', params.slug)
if (!post) {
post = await Post.create({
slug: params.slug,
likes: 0
})
}
return post.likes
}
public async unlike ({request, params}: HttpContextContract) {
const post = await Post.findByOrFail('slug', params.slug)
const ip = await request.ip()
const getLikes = post.likes - 1
const isLiked = await Redis.exists(`artapi/posts/${post.slug}/${ip}`)
if (isLiked) {
await Redis.del(`artapi/posts/${post.slug}/${ip}`)
await post.merge({
likes: getLikes
}).save()
return {
code: 200,
post
}
}
}
public async isLiked ({params, request}: HttpContextContract) {
const post = await Post.findBy('slug', params.slug)
if (post) {
const ip = request.ip()
return Redis.exists(`artapi/posts/${post.slug}/${ip}`);
}
return false
}
public async like ({request, params}: HttpContextContract) {
let post = await Post.findBy('slug', params.slug)
const ip = await request.ip()
if (!post) {
post = await Post.create({
slug: params.slug,
likes: 0
})
}
const getLikes = post.likes + 1
const isLiked = await Redis.exists(`artapi/posts/${post.slug}/${ip}`)
if (!isLiked) {
await Redis.set(`artapi/posts/${post.slug}/${ip}`, Date.now())
await post.merge({
likes: getLikes
}).save()
return {
code: 200,
post
}
}
}
}

View File

@@ -1,6 +1,6 @@
import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext";
export default class MeController {
export default class ProfileController {
public me ({ response }: HttpContextContract) {
return response.status(200).send({

View File

@@ -5,57 +5,54 @@ import {UpdateGitHubReadme} from "App/tasks/UpdateGithubReadme";
export default class StatesController {
public async get ({response}: HttpContextContract) {
const is_sleeping = await Redis.get('artapi/states/sleeping') || "false"
const is_learning = await Redis.get('artapi/states/learning') || "false"
const is_developing = await Redis.get('artapi/states/developing') || "false"
const is_listening_music = await Redis.get('artapi/states/listening') || "false"
const is_sleeping = await Redis.exists('artapi/states/sleeping')
const is_listening_music = await Redis.exists('artapi/states/listening')
const is_developing = await Redis.exists('artapi/states/developing')
const is_learning = await Redis.exists('artapi/states/learning')
return response.status(200).send({
is_sleeping: getStatus(is_sleeping),
is_learning: getStatus(is_learning),
is_developing: getStatus(is_developing),
is_listening_music: getStatus(is_listening_music)
is_learning: this.getStatus(is_learning),
is_sleeping: this.getStatus(is_sleeping),
is_developing: this.getStatus(is_developing),
is_listening_music: this.getStatus(is_listening_music)
})
}
public async setSleepingStatus ({request, response}: HttpContextContract) {
const sleeping = await request.input('sleeping')
await Redis.set('artapi/states/sleeping', sleeping)
await UpdateGitHubReadme()
return response.status(200).send({
message: 'State successfully updated !'
})
public async set ({request, response}: HttpContextContract) {
const state = await request.param('state')
const value = await request.input('value')
if (state && value) {
await Redis.set(`artapi/states/${state}`, value)
switch (state) {
case 'learning':
await Redis.set(`artapi/states/developing`, 'false')
await Redis.set(`artapi/states/sleeping`, 'false')
break
case 'developing':
await Redis.set(`artapi/states/learning`, 'false')
await Redis.set(`artapi/states/sleeping`, 'false')
break
case 'listening':
await Redis.set(`artapi/states/sleeping`, 'false')
break
case 'sleeping':
await Redis.set(`artapi/states/developing`, 'false')
await Redis.set(`artapi/states/listening`, 'false')
await Redis.set(`artapi/states/learning`, 'false')
break
}
await UpdateGitHubReadme()
return response.status(200).send({
message: 'State successfully updated !'
})
}
}
public async setDevelopingStatus ({request, response}: HttpContextContract) {
const developing = await request.input('developing')
await Redis.set('artapi/states/developing', developing)
await UpdateGitHubReadme()
return response.status(200).send({
message: 'State successfully updated !'
})
}
public async setLearningStatus ({request, response}: HttpContextContract) {
const learning = await request.input('learning')
await Redis.set('artapi/states/learning', learning)
await UpdateGitHubReadme()
return response.status(200).send({
message: 'State successfully updated !'
})
}
public async setListeningStatus ({request, response}: HttpContextContract) {
const listening = await request.input('listening')
await Redis.set('artapi/states/listening', listening)
await UpdateGitHubReadme()
return response.status(200).send({
message: 'State successfully updated !'
})
public getStatus(state: number): string {
return state === 1 ? "Yes" : "No"
}
}
function getStatus(state: string) {
return state === "true"
}

View File

@@ -1,54 +0,0 @@
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
import {getTotalStats, getWeeklyStats, getMonthlyStats, getDailyStats} from 'App/Helpers/StatsHelper'
import DockerBuild from "App/Models/DockerBuild"
import DockerCommand from "App/Models/DockerCommand"
import {UpdateGitHubReadme} from "App/tasks/UpdateGithubReadme";
export default class StatsController {
public async get ({response}: HttpContextContract) {
const daily = await getDailyStats()
const weekly = await getWeeklyStats()
const monthly = await getMonthlyStats()
const total = await getTotalStats()
return response.status(200).send({
daily: daily,
weekly: weekly,
monthly: monthly,
total: total,
})
}
public async incrementBuild () {
const date = new Date()
const last_entry = await DockerBuild.findBy('created_at', date)
if (last_entry) {
last_entry.builds = last_entry.builds ++
await last_entry.save()
} else {
await DockerBuild.create({
builds: BigInt(1)
})
}
await UpdateGitHubReadme()
}
public async incrementCommand () {
const date = new Date()
const last_entry = await DockerCommand.findBy('created_at', date)
if (last_entry) {
last_entry.commands = last_entry.commands ++
await last_entry.save()
} else {
await DockerCommand.create({
commands: BigInt(1)
})
}
await UpdateGitHubReadme()
}
}