From d2e2bb811707b02f05cbf22d10ef1916b021c90d Mon Sep 17 00:00:00 2001 From: retoor <retoor@molodetz.nl> Date: Tue, 8 Apr 2025 05:01:27 +0200 Subject: [PATCH] Update. --- src/snek/service/user_property.py | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/snek/service/user_property.py diff --git a/src/snek/service/user_property.py b/src/snek/service/user_property.py new file mode 100644 index 0000000..7531577 --- /dev/null +++ b/src/snek/service/user_property.py @@ -0,0 +1,34 @@ +import pathlib +import json +from snek.system import security +from snek.system.service import BaseService + + +class UserPropertyService(BaseService): + mapper_name = "user_property" + + async def set(self, user_uid, name, value): + prop = await self.get(user_uid=user_uid, name=name) + if not prop: + prop = await self.new() + prop["user_uid"] = user_uid + prop["name"] = name + + prop["value"] = json.dumps(value,default=str) + return await self.save(prop) + + async def get(self, user_uid, name): + try: + return json.loads((await self.get(user_uid=user_uid, name=name)).value) + except: + return None + + async def search(self, query, **kwargs): + query = query.strip().lower() + if not query: + raise [] + results = [] + async for result in self.find(name={"ilike": "%" + query + "%"}, **kwargs): + results.append(result) + return results +