@@ -67,6 +67,7 @@ impl StorageService {
6767 let media = match extension. as_str ( ) {
6868 "webp" => {
6969 let metadata = MediaMetadata {
70+ uuid,
7071 media_type : MediaType :: Image ,
7172 modified,
7273 } ;
@@ -78,6 +79,7 @@ impl StorageService {
7879 }
7980 "webm" => {
8081 let metadata = MediaMetadata {
82+ uuid,
8183 media_type : MediaType :: Video ,
8284 modified,
8385 } ;
@@ -117,7 +119,28 @@ impl StorageService {
117119 self . media . read ( ) . unwrap ( ) . len ( )
118120 }
119121
120- pub async fn insert ( & self , mut field : Field , format : Format ) -> anyhow:: Result < ( ) > {
122+ pub async fn remove ( & self , uuid : Uuid ) -> anyhow:: Result < MediaMetadata > {
123+ let mut lock = self . media . write ( ) . unwrap ( ) ;
124+
125+ let metadata;
126+
127+ match lock. get ( & uuid) {
128+ Some ( m) => {
129+ let path = m. path . clone ( ) ;
130+
131+ tokio:: fs:: remove_file ( path) . await ?;
132+
133+ metadata = lock. remove ( & uuid) . unwrap ( ) . metadata ;
134+ }
135+ None => {
136+ bail ! ( "Media with uuid '{}' doesn't exist" , uuid) ;
137+ }
138+ }
139+
140+ Ok ( metadata)
141+ }
142+
143+ pub async fn insert ( & self , mut field : Field , format : Format ) -> anyhow:: Result < MediaMetadata > {
121144 let uuid = Uuid :: new_v4 ( ) ;
122145
123146 // TEMPORARY
@@ -150,6 +173,9 @@ impl StorageService {
150173
151174 let output = command. output ( ) . unwrap ( ) ;
152175
176+ // Remove the temporary file to save space
177+ tokio:: fs:: remove_file ( & temporary) . await ?;
178+
153179 if !output. status . success ( ) {
154180 bail ! (
155181 "Couldn't convert '{}' to '{}'" ,
@@ -159,20 +185,21 @@ impl StorageService {
159185 }
160186
161187 let metadata = MediaMetadata {
188+ uuid,
162189 media_type : MediaType :: Image ,
163190 modified : Utc :: now ( ) ,
164191 } ;
165192
166193 let media = Media {
167194 path : persistent,
168- metadata,
195+ metadata : metadata . clone ( ) ,
169196 } ;
170197
171198 let mut lock = self . media . write ( ) . unwrap ( ) ;
172199
173200 lock. insert ( uuid, media) ;
174201
175- Ok ( ( ) )
202+ Ok ( metadata )
176203 }
177204}
178205
0 commit comments