sharedkernel 1.1.0__tar.gz → 1.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/PKG-INFO +1 -1
  2. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/setup.py +1 -1
  3. sharedkernel-1.1.1/sharedkernel/database/mongo_generic_repository.py +50 -0
  4. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel.egg-info/PKG-INFO +1 -1
  5. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel.egg-info/SOURCES.txt +1 -2
  6. sharedkernel-1.1.0/sharedkernel/database/adapter.py +0 -6
  7. sharedkernel-1.1.0/sharedkernel/database/mongo_repository_base.py +0 -82
  8. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/README.md +0 -0
  9. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/setup.cfg +0 -0
  10. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/common.py +0 -0
  11. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/config.py +0 -0
  12. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/database/__init__.py +0 -0
  13. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/database/vector_database_repository/__init__.py +0 -0
  14. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/database/vector_database_repository/chroma_startegy.py +0 -0
  15. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/database/vector_database_repository/milvus_strategy.py +0 -0
  16. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/database/vector_database_repository/vector_database_repository.py +0 -0
  17. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/database/vector_database_repository/vector_database_strategy.py +0 -0
  18. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/enum/__init__.py +0 -0
  19. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/enum/error_code.py +0 -0
  20. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/enum/vector_database_type.py +0 -0
  21. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/exception/__init__.py +0 -0
  22. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/exception/exception.py +0 -0
  23. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/exception/exception_handlers.py +0 -0
  24. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/jwt_service.py +0 -0
  25. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/objects/__init__.py +0 -0
  26. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/objects/base_document.py +0 -0
  27. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/objects/jwt_model.py +0 -0
  28. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/objects/result.py +0 -0
  29. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel/string_extentions.py +0 -0
  30. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel.egg-info/dependency_links.txt +0 -0
  31. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel.egg-info/requires.txt +0 -0
  32. {sharedkernel-1.1.0 → sharedkernel-1.1.1}/sharedkernel.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sharedkernel
3
- Version: 1.1.0
3
+ Version: 1.1.1
4
4
  Summary: sharekernel is an shared package between all python projects
5
5
  Author: Smilinno
6
6
  Requires-Dist: numpy
@@ -8,6 +8,6 @@ setup(
8
8
  # Needed for dependencies
9
9
  install_requires=['numpy','requests','pymongo','fastapi==0.89.1','PyJWT','pymilvus','chromadb'],
10
10
  # *strongly* suggested for sharing
11
- version='1.1.0',
11
+ version='1.1.1',
12
12
  description='sharekernel is an shared package between all python projects',
13
13
  )
@@ -0,0 +1,50 @@
1
+ from pymongo import MongoClient
2
+ from bson import ObjectId
3
+ from typing import Generic, TypeVar, List, Type
4
+ from pydantic import BaseModel
5
+ from sharedkernel.string_extentions import camel_to_snake
6
+
7
+ T = TypeVar("T", bound=BaseModel)
8
+
9
+
10
+ class MongoGenericRepository(Generic[T]):
11
+ def __init__(self, database: MongoClient, model: Type[T]):
12
+ self.database = database
13
+ self.__collection_name = camel_to_snake(model.__name__)
14
+ self.__collection = self.database[self.__collection_name]
15
+ self.model = model
16
+
17
+ def _map_to_model(self, document: dict) -> T:
18
+ document["id"] = str(document.pop("_id"))
19
+ return self.model.parse_obj(document)
20
+
21
+ def find_one(self, id: str) -> T:
22
+ query = {"_id": ObjectId(id), "is_deleted": False}
23
+ result = self.__collection.find_one(query)
24
+ return self._map_to_model(result) if result else None
25
+
26
+ def insert_one(self, data: T) -> str:
27
+ delattr(data, "id")
28
+ result = self.__collection.insert_one(data.dict())
29
+ return str(result.inserted_id)
30
+
31
+ def insert_many(self, data: List[T]) -> List[str]:
32
+ data_list = [delattr(d.dict(), "id") for d in data]
33
+ result = self.__collection.insert_many(data_list)
34
+ return [str(id_) for id_ in result.inserted_ids]
35
+
36
+ def update_one(self, id: str, data: T) -> int:
37
+ delattr(data, "id")
38
+ query = {"_id": ObjectId(id)}
39
+ result = self.__collection.update_one(query, {"$set": data.dict()})
40
+ return result.modified_count
41
+
42
+ def delete_one(self, id: str) -> int:
43
+ query = {"_id": ObjectId(id)}
44
+ result = self.__collection.delete_one(query)
45
+ return result.deleted_count
46
+
47
+ def get_all(self, page_number=1, page_size=10) -> List[T]:
48
+ skip_count = (page_number - 1) * page_size
49
+ result = self.__collection.find().skip(skip_count).limit(page_size)
50
+ return [self._map_to_model(doc) for doc in result]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sharedkernel
3
- Version: 1.1.0
3
+ Version: 1.1.1
4
4
  Summary: sharekernel is an shared package between all python projects
5
5
  Author: Smilinno
6
6
  Requires-Dist: numpy
@@ -10,8 +10,7 @@ sharedkernel.egg-info/dependency_links.txt
10
10
  sharedkernel.egg-info/requires.txt
11
11
  sharedkernel.egg-info/top_level.txt
12
12
  sharedkernel/database/__init__.py
13
- sharedkernel/database/adapter.py
14
- sharedkernel/database/mongo_repository_base.py
13
+ sharedkernel/database/mongo_generic_repository.py
15
14
  sharedkernel/database/vector_database_repository/__init__.py
16
15
  sharedkernel/database/vector_database_repository/chroma_startegy.py
17
16
  sharedkernel/database/vector_database_repository/milvus_strategy.py
@@ -1,6 +0,0 @@
1
- from pymongo import MongoClient
2
-
3
- class MongoDBClient:
4
- def __init__(self,connection_string):
5
- self.client = MongoClient(connection_string)
6
- self.domain = self.client.domain
@@ -1,82 +0,0 @@
1
- from typing import (Optional,
2
- List
3
- )
4
- from bson.objectid import ObjectId
5
- from typing import Generic, TypeVar
6
- from pydantic import BaseModel
7
- from pydantic import parse_obj_as
8
-
9
- from sharedkernel.string_extentions import camel_to_snake
10
- from .adapter import MongoDBClient
11
-
12
-
13
- from sharedkernel.exception.exception import BusinessException
14
- from sharedkernel.enum.error_code import ErrorCode
15
-
16
- mongo_client= MongoDBClient()
17
-
18
- ResultT = TypeVar("ResultT")
19
-
20
- T = TypeVar("T", bound=BaseModel)
21
-
22
- class MongoRepositoryBase(Generic[T]):
23
-
24
- def __init__(self,model):
25
- self.model = model
26
- self.model_name= camel_to_snake(self.model.__name__)
27
-
28
-
29
- def find(self,id: str) -> T:
30
- if (not ObjectId.is_valid(id)):
31
- raise BusinessException(ErrorCode.Item_NotFound)
32
-
33
- query = {"_id": ObjectId(id),"is_deleted":False}
34
-
35
- item = mongo_client.domain[self.model_name].find_one(query)
36
-
37
- if (not item):
38
- raise BusinessException(ErrorCode.Item_NotFound)
39
-
40
- item['_id']=str(item['_id'])
41
- item['id']= item['_id']
42
- item.pop('_id')
43
-
44
- return self.model.parse_obj(item) if item else None
45
-
46
-
47
- def get_all(self,query:dict = None) -> Optional[List]:
48
- if query:
49
- query["is_deleted"]= False
50
- else:
51
- query= {"is_deleted":False}
52
- items = list(mongo_client.domain[self.model_name].find(query))
53
-
54
- for item in items:
55
- item['_id'] = str(item['_id'])
56
- item['id']= item['_id']
57
- item.pop('_id')
58
-
59
- return parse_obj_as(List[self.model],items)
60
-
61
-
62
- def insert(self, insert_data: T) -> str:
63
- delattr(insert_data, "id")
64
- inserted_data= mongo_client.domain[self.model_name].insert_one(insert_data.dict())
65
-
66
- return str(inserted_data.inserted_id)
67
-
68
- def bulk_insert(self, insert_data: List[T]):
69
- insert_data=[delattr(data, "id") for data in insert_data]
70
- mongo_client.domain[self.model_name].insert_many(insert_data)
71
-
72
-
73
-
74
- def update(self,id:str,update_data: T):
75
- query = {"_id": ObjectId(id)}
76
- delattr(update_data, "id")
77
- mongo_client.domain[self.model_name].update_one(query, {"$set": update_data.dict()}, upsert=False)
78
-
79
-
80
- def query(self):
81
- return mongo_client.domain[self.model_name]
82
-
File without changes
File without changes