-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdatabase.py
92 lines (73 loc) · 2.95 KB
/
database.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import pymongo
import uuid
import config
from pathlib import Path
from utils import *
import os
import logging
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s - %(lineno)d")
class Database:
def __init__(self):
try:
self.client = pymongo.MongoClient(config.mongodb_uri)
self.db = self.client["job-prep"]
self.resume_collection = self.db["resumes"]
self.raw_jobs_collection = self.db["raw_jobs"]
self.processed_jobs_collection = self.db["processed_jobs"]
self.search_collection = self.db["search"]
except Exception as e:
logging.error("An error occurred while fetching MongoDB client: %s", str(e))
def get_client(self):
return self.db
def store_search_id(self, search_id, positions, location):
try:
self.search_collection.insert_one({
"_id" : search_id,
"positions" : positions,
"location" : location
})
except Exception as e:
logging.error("An error occurred while inserting search data: %s", str(e))
#TODO: Modify to store unique values only
def store_raw(self, jsonlist):
try:
self.raw_jobs_collection.delete_many({})
self.raw_jobs_collection.insert_many(jsonlist)
except Exception as e:
logging.error("An error occurred while inserting raw data: %s", str(e))
def store_processed(self, jsonlist):
try:
self.processed_jobs_collection.delete_many({})
self.processed_jobs_collection.insert_many(jsonlist)
except Exception as e:
logging.error("An error occurred while inserting processed data: %s", str(e))
def check_if_resume_exists(self):
if self.resume_collection.count_documents({"type": "resume"}) > 0:
return True
else:
return False
def store_resume(self, pdf):
if self.check_if_resume_exists():
self.resume_collection.delete_one({"type": "resume"})
chunks=get_text_from_pdf(pdf)
self.resume_collection.insert_one({
"type": "resume",
"filename": pdf.name,
"content": chunks})
def get_resume(self):
if self.check_if_resume_exists():
return self.resume_collection.find_one({"type": "resume"})
else:
return None
def get_raw(self):
return list(self.raw_jobs_collection.find({}))
def get_processed(self, applied=False):
if applied:
return list(self.processed_jobs_collection.find({"applied": True}))
else:
return list(self.processed_jobs_collection.find({}))
def update(self, df):
for item in df:
query = { "_id": item["_id"] }
newvalue = { "$set": { "applied": item["applied"] } }
self.processed_jobs_collection.update_one(query, newvalue)