1717# limitations under the License.
1818"""Renku service files cache management."""
1919from renku .ui .service .cache .base import BaseCache
20- from renku .ui .service .cache .models .file import File
20+ from renku .ui .service .cache .models .file import File , FileChunk
2121from renku .ui .service .cache .models .user import User
22- from renku .ui .service .cache .serializers .file import FileSchema
22+ from renku .ui .service .cache .serializers .file import FileChunkSchema , FileSchema
2323
2424
2525class FileManagementCache (BaseCache ):
2626 """File management cache."""
2727
2828 file_schema = FileSchema ()
29+ chunk_schema = FileChunkSchema ()
2930
3031 def set_file (self , user , file_data ):
3132 """Cache file metadata."""
@@ -40,6 +41,15 @@ def set_files(self, user, files):
4041 """Cache files metadata."""
4142 return [self .set_file (user , file_ ) for file_ in files ]
4243
44+ def set_file_chunk (self , user , chunk_data ):
45+ """Cache chunk metadata."""
46+ chunk_data .update ({"user_id" : user .user_id })
47+
48+ chunk_obj = self .chunk_schema .load (chunk_data )
49+ chunk_obj .save ()
50+
51+ return chunk_obj
52+
4353 @staticmethod
4454 def get_file (user , file_id ):
4555 """Get user file."""
@@ -55,6 +65,21 @@ def get_files(user):
5565 """Get all user cached files."""
5666 return File .query (File .user_id == user .user_id )
5767
68+ @staticmethod
69+ def get_chunks (user , chunked_id = None ):
70+ """Get all user chunks for a file."""
71+ if chunked_id is not None :
72+ return FileChunk .query (FileChunk .user_id == user .user_id and FileChunk .chunked_id == chunked_id )
73+ return FileChunk .query (FileChunk .user_id == user .user_id )
74+
75+ @staticmethod
76+ def invalidate_chunks (user , chunked_id ):
77+ """Remove all user chunks for a file."""
78+ chunks = FileChunk .query (FileChunk .user_id == user .user_id and FileChunk .chunked_id == chunked_id )
79+
80+ for chunk in chunks :
81+ chunk .delete ()
82+
5883 @staticmethod
5984 def invalidate_file (user , file_id ):
6085 """Remove users file records."""
@@ -69,3 +94,8 @@ def user_files(self):
6994 """Iterate through all cached files."""
7095 for user in User .all ():
7196 yield user , self .get_files (user )
97+
98+ def user_chunks (self ):
99+ """Iterate through all cached files."""
100+ for user in User .all ():
101+ yield user , self .get_chunks (user )
0 commit comments