mirror of https://github.com/Bunsly/JobSpy
extracted mongo db connections
parent
9c18c2e936
commit
768b478d66
|
@ -1,9 +1,9 @@
|
||||||
import os
|
|
||||||
from typing import List
|
from typing import List
|
||||||
from dotenv import load_dotenv
|
|
||||||
from pymongo import MongoClient, UpdateOne
|
|
||||||
import pymongo
|
|
||||||
|
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
from pymongo import UpdateOne
|
||||||
|
|
||||||
|
from .monogo_db import MongoDB
|
||||||
from .. import create_logger
|
from .. import create_logger
|
||||||
from ..jobs import JobPost
|
from ..jobs import JobPost
|
||||||
|
|
||||||
|
@ -11,27 +11,20 @@ load_dotenv()
|
||||||
|
|
||||||
|
|
||||||
class JobRepository:
|
class JobRepository:
|
||||||
def __new__(cls):
|
_instance = None
|
||||||
if not hasattr(cls, 'instance'):
|
|
||||||
cls.instance = super(JobRepository, cls).__new__(cls)
|
|
||||||
return cls.instance
|
|
||||||
|
|
||||||
def __init__(self, database_name: str = None):
|
def __new__(cls):
|
||||||
|
|
||||||
|
if cls._instance is not None:
|
||||||
|
return cls._instance
|
||||||
|
|
||||||
|
self = super().__new__(cls)
|
||||||
|
cls._instance = self
|
||||||
self.logger = create_logger("JobRepository")
|
self.logger = create_logger("JobRepository")
|
||||||
self.mongoUri = os.getenv("MONGO_URI")
|
mongo_client = MongoDB()
|
||||||
if not self.mongoUri:
|
self.collection = mongo_client.db["jobs"]
|
||||||
self.logger.error("MONGO_URI environment variable is not set")
|
|
||||||
raise ValueError("MONGO_URI environment variable is not set")
|
|
||||||
self.client = MongoClient(self.mongoUri)
|
|
||||||
if database_name is None:
|
|
||||||
database_name = os.getenv("MONGO_DB_NAME")
|
|
||||||
if not database_name:
|
|
||||||
self.logger.error("MONGO_DB_NAME environment variable is not set")
|
|
||||||
raise ValueError(
|
|
||||||
"MONGO_DB_NAME environment variable is not set")
|
|
||||||
self.db = self.client[database_name]
|
|
||||||
self.collection = self.db["jobs"]
|
|
||||||
self.logger.info("Succeed connect to MongoDB")
|
self.logger.info("Succeed connect to MongoDB")
|
||||||
|
return cls._instance
|
||||||
|
|
||||||
def insert_job(self, job: JobPost):
|
def insert_job(self, job: JobPost):
|
||||||
job_dict = job.model_dump(exclude={"date_posted"})
|
job_dict = job.model_dump(exclude={"date_posted"})
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
import os
|
||||||
|
|
||||||
|
from pymongo import MongoClient
|
||||||
|
from pymongo.synchronous.database import Database
|
||||||
|
|
||||||
|
from jobspy import create_logger
|
||||||
|
|
||||||
|
|
||||||
|
class MongoDB:
|
||||||
|
_instance = None
|
||||||
|
db:Database = None
|
||||||
|
def __new__(cls):
|
||||||
|
|
||||||
|
if cls._instance is not None:
|
||||||
|
return cls._instance
|
||||||
|
|
||||||
|
self = super().__new__(cls)
|
||||||
|
cls._instance = self
|
||||||
|
logger = create_logger("Mongo Client")
|
||||||
|
mongoUri = os.getenv("MONGO_URI")
|
||||||
|
if not mongoUri:
|
||||||
|
logger.error("MONGO_URI environment variable is not set")
|
||||||
|
raise ValueError("MONGO_URI environment variable is not set")
|
||||||
|
client = MongoClient(mongoUri)
|
||||||
|
database_name = os.getenv("MONGO_DB_NAME")
|
||||||
|
if not database_name:
|
||||||
|
logger.error("MONGO_DB_NAME environment variable is not set")
|
||||||
|
raise ValueError(
|
||||||
|
"MONGO_DB_NAME environment variable is not set")
|
||||||
|
|
||||||
|
self.db = client[database_name]
|
||||||
|
return cls._instance
|
17
src/main.py
17
src/main.py
|
@ -1,5 +1,6 @@
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from pymongo import MongoClient
|
||||||
from telegram import Update
|
from telegram import Update
|
||||||
from telegram.ext import Application, CommandHandler, CallbackQueryHandler
|
from telegram.ext import Application, CommandHandler, CallbackQueryHandler
|
||||||
|
|
||||||
|
@ -14,12 +15,28 @@ title_filters: list[str] = ["test", "qa", "Lead", "Full-Stack", "Full Stack", "F
|
||||||
"automation", "BI ", "Principal", "Architect", "Android", "Machine Learning", "Student",
|
"automation", "BI ", "Principal", "Architect", "Android", "Machine Learning", "Student",
|
||||||
"Data Engineer", "DevSecOps"]
|
"Data Engineer", "DevSecOps"]
|
||||||
|
|
||||||
|
def connect_db():
|
||||||
|
logger = create_logger("Mongo Client")
|
||||||
|
mongoUri = os.getenv("MONGO_URI")
|
||||||
|
if not mongoUri:
|
||||||
|
logger.error("MONGO_URI environment variable is not set")
|
||||||
|
raise ValueError("MONGO_URI environment variable is not set")
|
||||||
|
client = MongoClient(mongoUri)
|
||||||
|
database_name = os.getenv("MONGO_DB_NAME")
|
||||||
|
if not database_name:
|
||||||
|
logger.error("MONGO_DB_NAME environment variable is not set")
|
||||||
|
raise ValueError(
|
||||||
|
"MONGO_DB_NAME environment variable is not set")
|
||||||
|
|
||||||
|
return client[database_name]
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
logger.info("Starting initialize ")
|
logger.info("Starting initialize ")
|
||||||
_api_token = os.getenv("TELEGRAM_API_TOKEN")
|
_api_token = os.getenv("TELEGRAM_API_TOKEN")
|
||||||
search_term = "software engineer"
|
search_term = "software engineer"
|
||||||
locations = ["Tel Aviv, Israel", "Ramat Gan, Israel",
|
locations = ["Tel Aviv, Israel", "Ramat Gan, Israel",
|
||||||
"Central, Israel", "Rehovot ,Israel"]
|
"Central, Israel", "Rehovot ,Israel"]
|
||||||
|
db = connect_db()
|
||||||
application = Application.builder().token(_api_token).build()
|
application = Application.builder().token(_api_token).build()
|
||||||
tg_callback_handler = TelegramCallHandler()
|
tg_callback_handler = TelegramCallHandler()
|
||||||
tg_handler_all = TelegramDefaultHandler(sites=[Site.LINKEDIN, Site.GLASSDOOR, Site.INDEED, Site.GOOZALI],
|
tg_handler_all = TelegramDefaultHandler(sites=[Site.LINKEDIN, Site.GLASSDOOR, Site.INDEED, Site.GOOZALI],
|
||||||
|
|
Loading…
Reference in New Issue