Skip to content
Snippets Groups Projects
Unverified Commit a96b061a authored by REIG Julien's avatar REIG Julien
Browse files

add database function to manage presence

parent 7303ffe6
No related branches found
No related tags found
1 merge request!16Node knowledge
......@@ -86,7 +86,7 @@ def count_resources() -> int:
return -1
def get_resource(id: str, with_commands: bool = False) -> Optional[Resource]:
def get_resource(id: str, with_commands: bool = False, with_presence: bool = False) -> Optional[Resource]:
with sqlite3.connect(db_file) as db_conn:
try:
cursor = db_conn.cursor()
......@@ -98,9 +98,10 @@ def get_resource(id: str, with_commands: bool = False) -> Optional[Resource]:
return None
deleted = resource_id_is_deleted(id)
presences = None if not with_presence else get_presence(id)
if with_commands:
return Resource.from_tuple(resource, commands=get_commands(id), deleted=deleted)
return Resource.from_tuple(resource, commands_count=get_commands_count(id), deleted=deleted)
return Resource.from_tuple(resource, commands=get_commands(id), deleted=deleted, presence=presences)
return Resource.from_tuple(resource, commands_count=get_commands_count(id), deleted=deleted, presence=presences)
except Exception as e:
print(e, file=sys.stderr)
return None
......@@ -167,6 +168,44 @@ def get_commands_count(resource_id: str) -> int:
print(e, file=sys.stderr)
return -1
def insert_presence(resource_id: str, node_address: str) -> bool:
with sqlite3.connect(db_file) as db_conn:
try:
cursor = db_conn.cursor()
cursor.execute(
"INSERT INTO presence (resource_id, node_address) VALUES (?, ?)", (resource_id, node_address))
db_conn.commit()
cursor.close()
return True
except Exception as e:
print(e, file=sys.stderr)
return False
def insert_presence_bulk(resource: Resource) -> bool:
with sqlite3.connect(db_file) as db_conn:
try:
cursor = db_conn.cursor()
cursor.executemany(
"INSERT INTO presence (resource_id, node_address) VALUES (?, ?)", resource.to_presence_tuples())
db_conn.commit()
cursor.close()
return True
except Exception as e:
print(e, file=sys.stderr)
return False
def get_presence(resource_id: str) -> Optional[list[str]]:
with sqlite3.connect(db_file) as db_conn:
try:
cursor = db_conn.cursor()
cursor.execute(
"SELECT node_address FROM presence WHERE resource_id = ?", (resource_id,))
presence = cursor.fetchall()
cursor.close()
return [p[0] for p in presence]
except Exception as e:
print(e, file=sys.stderr)
return None
def get_command_queue(node_address: str) -> Optional[list]:
with sqlite3.connect(db_queue_file) as db_conn:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment