hpnq

NODEJS ХАКАТОН

Sep 30th, 2023 (edited)
913
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const express = require('express')
  2. const uuid = require("uuid") // уникальные айдишники
  3. const fs = require('fs')
  4.  
  5. const bodyParser = require('body-parser');
  6. //
  7. const emessage = "Что-то пошло не так, попробуйте снова"
  8. //
  9. const app = express();
  10. app.use(bodyParser.urlencoded({ extended: true }));
  11. const port = 3001
  12.  
  13. // работа с файлами
  14. const folderName = "../vacancies"
  15. const folder_place = "../place"
  16.  
  17. if(!fs.existsSync(folderName)){
  18.     fs.mkdirSync(folderName)
  19. }
  20.  
  21. if(!fs.existsSync(folder_place)){
  22.     fs.mkdirSync(folder_place)
  23. }
  24.  
  25.  
  26.  
  27. // TODO: создание пользователя и запись его в вакансии
  28.  
  29.  
  30. function getDirectories(path) {
  31.     return fs.readdirSync(path).filter(function (file) {
  32.       return fs.statSync(path+'/'+file).isDirectory();
  33.     });
  34. }
  35.  
  36. //отдавать аддрес, обратотать ошибки:
  37. // 0 элементов
  38. app.post("/get_place", (req, res)=>{
  39.     try{
  40.         let {cnt} = req.body;
  41.  
  42.         dirid = getDirectories(folder_place)
  43.         console.log("dirdis!! ", dirid)
  44.         ids = []
  45.         if(dirid.length == 0){
  46.             console.log("dirdir here")
  47.             res.status(201).json({message:"0 places"})
  48.             return
  49.         }
  50.         for(let i = 0; i < cnt; i++){
  51.             ids.push(dirid[Math.floor(Math.random()*dirid.length)]) // РАДнОМНЫЙ ЭлЕМЕНт
  52.         }
  53.        
  54.         console.log("ids:", ids)
  55.         // console.log(ids)
  56.         vacancies = []
  57.         for(let i = 0; i < Math.min(cnt, ids.length); i ++ ){
  58.             let vac =fs.readFileSync(folder_place+"/" + ids[i] + "/" + ids[i] +".json", "utf8", (err) => {
  59.                 if (err)
  60.                   console.log(err);
  61.                 else {
  62.                   console.log("File open successfully");
  63.                 }
  64.             })
  65.             console.log(vac)
  66.             vacancies.push(vac)
  67.         }
  68.         // console.log(vacancies)
  69.         d = vacancies
  70.         console.log(d)
  71.         res.status(201).json({data:d})
  72.     }catch(e){
  73.         console.log(e);
  74.         res.status(500).json({messssage:emessage})
  75.     }  
  76. })
  77.  
  78.  
  79. //TODO: Лимит на отправку, валидатор
  80. app.post("/new_vacancies", (req, res) => {
  81.     try{
  82.  
  83.         const id = uuid.v4()
  84.        
  85.         let vacance = Object.assign({"vid" : id}, req.body)
  86.         // console.log("vacance: ", vacance)
  87.         let nfoldername = folderName+"/"+id
  88.         if(!fs.existsSync(nfoldername)){
  89.             let vac = JSON.stringify(vacance)
  90.             console.log("vacancy: ", vac)
  91.             fs.mkdirSync(nfoldername)
  92.             fs.writeFile(nfoldername+"/"+id+".json", vac, (err) => {
  93.                 if (err)
  94.                   console.log(err);
  95.                 else {
  96.                   console.log("\nFile written successfully\n");
  97.                 }
  98.             })
  99.         }else{
  100.             throw new Error("упс, айди совпали))))")
  101.         }
  102.  
  103.         res.status(201).json({message:"Вакансия успешно отправлена."})    
  104.     }catch(e){
  105.         console.log(e);
  106.         res.status(500).json({messssage:emessage})
  107.     }
  108. })
  109.  
  110.  
  111. app.post("/load_vacancies", (req, res)=>{
  112.     try{
  113.         let {cnt} = req.body;
  114.  
  115.         dirid = getDirectories("../hacaton_api/vacancies")
  116.         ids = []
  117.         for(let i = 0; i < cnt; i++){
  118.             ids.push(dirid[Math.floor(Math.random()*dirid.length)]) // РАДнОМНЫЙ ЭлЕМЕНт
  119.         }
  120.         // console.log(ids)
  121.         vacancies = []
  122.         for(let i = 0; i < Math.min(cnt, ids.length); i ++ ){
  123.             let vac =fs.readFileSync("../hacaton_api/vacancies/" + ids[i] + "/" + ids[i] +".json", "utf8", (err) => {
  124.                 if (err)
  125.                   console.log(err);
  126.                 else {
  127.                   console.log("File open successfully");
  128.                 }
  129.             })
  130.             console.log(vac)
  131.             vacancies.push(vac)
  132.         }
  133.         // console.log(vacancies)
  134.         d = vacancies
  135.         console.log(d)
  136.         res.status(201).json({data:d})
  137.     }catch(e){
  138.         console.log(e);
  139.         res.status(500).json({messssage:emessage})
  140.     }
  141. })
  142.  
  143. // массив джейсонов всех данных
  144. //`{"vid":"fe899390-67a0-48f8-bdda-e6cf1dfe26e2","email":"123","first_name":"Bob","second_name":"Garrly","text":"Hello i am Bob and i'm gay","Phone":"89232939394","Prof":"Sex"}`
  145. app.listen(port, () => {
  146.   console.log(`Example app listening on port ${port}`)
  147. })
Advertisement
Add Comment
Please, Sign In to add comment