diff --git a/app/cron_pocketbase.py b/app/cron_pocketbase.py new file mode 100644 index 0000000..65bd471 --- /dev/null +++ b/app/cron_pocketbase.py @@ -0,0 +1,33 @@ +from datetime import datetime, timedelta +from pocketbase import PocketBase # Client also works the same +import asyncio +from dotenv import load_dotenv +import os +load_dotenv() + +pb_admin_email = os.getenv('POCKETBASE_ADMIN_EMAIL') +pb_password = os.getenv('POCKETBASE_PASSWORD') + +pb = PocketBase('http://127.0.0.1:8090') +admin_data = pb.admins.auth_with_password(pb_admin_email, pb_password) + + +now = datetime.now() +seven_days_ago = now - timedelta(days=7) + + +async def update_free_trial(): + + data = pb.collection("users").get_full_list(query_params = {"filter": f'freeTrial = True'}) + + for item in data: + created_date = item.created + # Check if the created date is more than 7 days ago + if created_date < seven_days_ago: + # Update the user record + pb.collection("users").update(item.id, { + "tier": 'Free', + "freeTrial": False, + }) + +asyncio.run(update_free_trial()) \ No newline at end of file diff --git a/app/primary_cron_job.py b/app/primary_cron_job.py index d1aceb0..74045ce 100755 --- a/app/primary_cron_job.py +++ b/app/primary_cron_job.py @@ -33,6 +33,10 @@ def run_json_job(): subprocess.run(["python3", "restart_json.py"]) subprocess.run(["pm2", "restart","fastapi"]) +def run_pocketbase(): + # Run the asynchronous function inside an asyncio loop + subprocess.run(["python3", "cron_pocketbase.py"]) + def run_cron_insider_trading(): week = datetime.today().weekday() if week <= 5: @@ -316,6 +320,8 @@ schedule.every().day.at("01:00").do(run_threaded, run_options_bubble_ticker).tag schedule.every().day.at("02:00").do(run_threaded, run_db_schedule_job) schedule.every().day.at("03:00").do(run_threaded, run_dark_pool) schedule.every().day.at("06:00").do(run_threaded, run_historical_price).tag('historical_job') +schedule.every().day.at("06:30").do(run_threaded, run_pocketbase).tag('pocketbase_job') + schedule.every().day.at("07:00").do(run_threaded, run_ta_rating).tag('ta_rating_job') schedule.every().day.at("08:00").do(run_threaded, run_cron_insider_trading).tag('insider_trading_job') schedule.every().day.at("09:00").do(run_threaded, run_congress_trading).tag('congress_job')