From 4160deddc82e225a7655d926d728b72b2639cb78 Mon Sep 17 00:00:00 2001 From: Guy Van Sanden Date: Mon, 6 Mar 2023 14:15:01 +0100 Subject: [PATCH] Added ttl --- src/app.py | 47 +++++++++++++++++++++++++---------------------- src/config.yml | 3 ++- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/app.py b/src/app.py index 8b2ba04..08bb6a4 100644 --- a/src/app.py +++ b/src/app.py @@ -9,8 +9,9 @@ from flask import Flask, jsonify import yaml import psycopg2 import psycopg2.extras +from datetime import datetime -__VERSION__ = '0.5' +__VERSION__ = '0.7' app = Flask('app') print("Pleroma2nip05 v%s" % (__VERSION__)) @@ -19,16 +20,6 @@ with open(r'/etc/pleroma2nip05/config.yml') as configfile: config = yaml.load(configfile, Loader=yaml.FullLoader) # https:///.well-known/nostr.json -# { -# "names": { -# "bob": "b0635d6a9851d3aed0cd6c495b282167acf761729078d975fc341b22650b07b9" -# }, -# "relays": { -# "b0635d6a9851d3aed0cd6c495b282167acf761729078d975fc341b22650b07b9": [ "wss://relay.example.com", "wss://relay2.example.com" ] -# } -# } - -# {"names":{"gvs":"eb2881406ad19ba7cf01c210ce002f4fe53e8ce6d84e77df5a2319f9f00a8005"}} try: # Connect to an existing database @@ -40,28 +31,40 @@ try: cursor = connection.cursor(cursor_factory = psycopg2.extras.RealDictCursor) print("PostgreSQL server information") print(connection.get_dsn_parameters(), "\n") - # cursor.execute("SELECT version();") - # # Fetch result - # record = cursor.fetchone() - # print("You are connected to - ", record, "\n") + except (Exception, Error) as error: print("Error while connecting to PostgreSQL", error) -# finally: -# if (connection): -# cursor.close() -# connection.close() -# print("PostgreSQL connection is closed") # Get local users only userquery = "SELECT nickname, fields FROM users WHERE nickname NOT LIKE '%@%';" relays = [ "wss://relay.rebelbase.site" , "wss://nostr-pub.wellorder.net" , "wss://relay.orangepill.dev", "wss://relay.shitforce.one" ] +lastupdate = None +localusers = None @app.route("/json") def get_json(): - cursor.execute(userquery) - localusers = cursor.fetchall() + global lastupdate + global localusers + global userquery + global userquery + + print(lastupdate) + now = datetime.now() + if lastupdate is not None: + diff = (now - lastupdate) + age = diff.total_seconds() + else: + age = 9999999 + + if age > int(config.get('ttl')): + print('From DB') + cursor.execute(userquery) + localusers = cursor.fetchall() + lastupdate = now + else: + print('From cache') nostr = {} nostr['names'] = {} diff --git a/src/config.yml b/src/config.yml index 8353285..d70dd2f 100644 --- a/src/config.yml +++ b/src/config.yml @@ -1,4 +1,5 @@ pguser: pleroma -pgpass: +pgpass: pghost: localhost pleromadb: pleroma +ttl: 300