@@ -18,7 +18,7 @@ use futures::future::try_join_all;
18
18
use futures:: StreamExt ;
19
19
use itertools:: Itertools ;
20
20
use opendal:: services:: Memory ;
21
- use opendal:: Operator ;
21
+ use opendal:: { Metakey , Operator } ;
22
22
use tokio:: io:: AsyncRead ;
23
23
24
24
use crate :: object:: {
@@ -47,7 +47,7 @@ impl OpendalObjectStore {
47
47
// Create memory backend builder.
48
48
let builder = Memory :: default ( ) ;
49
49
50
- let op: Operator = Operator :: create ( builder) ?. finish ( ) ;
50
+ let op: Operator = Operator :: new ( builder) ?. finish ( ) ;
51
51
Ok ( Self {
52
52
op,
53
53
engine_type : EngineType :: Memory ,
@@ -65,7 +65,7 @@ impl ObjectStore for OpendalObjectStore {
65
65
if obj. is_empty ( ) {
66
66
Err ( ObjectError :: internal ( "upload empty object" ) )
67
67
} else {
68
- self . op . object ( path ) . write ( obj) . await ?;
68
+ self . op . write ( path , obj) . await ?;
69
69
Ok ( ( ) )
70
70
}
71
71
}
@@ -81,15 +81,15 @@ impl ObjectStore for OpendalObjectStore {
81
81
match block {
82
82
Some ( block) => {
83
83
let range = block. offset as u64 ..( block. offset + block. size ) as u64 ;
84
- let res = Bytes :: from ( self . op . object ( path ) . range_read ( range) . await ?) ;
84
+ let res = Bytes :: from ( self . op . range_read ( path , range) . await ?) ;
85
85
86
86
if block. size != res. len ( ) {
87
87
Err ( ObjectError :: internal ( "bad block offset and size" ) )
88
88
} else {
89
89
Ok ( res)
90
90
}
91
91
}
92
- None => Ok ( Bytes :: from ( self . op . object ( path ) . read ( ) . await ?) ) ,
92
+ None => Ok ( Bytes :: from ( self . op . read ( path ) . await ?) ) ,
93
93
}
94
94
}
95
95
@@ -114,20 +114,15 @@ impl ObjectStore for OpendalObjectStore {
114
114
) ) ;
115
115
116
116
let reader = match start_pos {
117
- Some ( start_position) => {
118
- self . op
119
- . object ( path)
120
- . range_reader ( start_position as u64 ..)
121
- . await ?
122
- }
123
- None => self . op . object ( path) . reader ( ) . await ?,
117
+ Some ( start_position) => self . op . range_reader ( path, start_position as u64 ..) . await ?,
118
+ None => self . op . reader ( path) . await ?,
124
119
} ;
125
120
126
121
Ok ( Box :: new ( reader) )
127
122
}
128
123
129
124
async fn metadata ( & self , path : & str ) -> ObjectResult < ObjectMetadata > {
130
- let opendal_metadata = self . op . object ( path) . metadata ( ) . await ?;
125
+ let opendal_metadata = self . op . stat ( path) . await ?;
131
126
let key = path. to_string ( ) ;
132
127
let last_modified = match opendal_metadata. last_modified ( ) {
133
128
Some ( t) => t. unix_timestamp ( ) as f64 ,
@@ -144,24 +139,28 @@ impl ObjectStore for OpendalObjectStore {
144
139
}
145
140
146
141
async fn delete ( & self , path : & str ) -> ObjectResult < ( ) > {
147
- self . op . object ( path ) . delete ( ) . await ?;
142
+ self . op . delete ( path ) . await ?;
148
143
Ok ( ( ) )
149
144
}
150
145
151
146
/// Deletes the objects with the given paths permanently from the storage. If an object
152
147
/// specified in the request is not found, it will be considered as successfully deleted.
153
148
async fn delete_objects ( & self , paths : & [ String ] ) -> ObjectResult < ( ) > {
154
- self . op . batch ( ) . remove ( paths. to_vec ( ) ) . await ?;
149
+ self . op . remove ( paths. to_vec ( ) ) . await ?;
155
150
Ok ( ( ) )
156
151
}
157
152
158
153
async fn list ( & self , prefix : & str ) -> ObjectResult < Vec < ObjectMetadata > > {
159
- let mut object_lister = self . op . object ( prefix ) . list ( ) . await ?;
154
+ let mut object_lister = self . op . list ( prefix ) . await ?;
160
155
let mut metadata_list = vec ! [ ] ;
161
156
while let Some ( obj) = object_lister. next ( ) . await {
162
157
let object = obj?;
163
158
let key = prefix. to_string ( ) ;
164
- let om = object. metadata ( ) . await ?;
159
+
160
+ let om = self
161
+ . op
162
+ . metadata ( & object, Metakey :: LastModified | Metakey :: ContentLength )
163
+ . await ?;
165
164
166
165
let last_modified = match om. last_modified ( ) {
167
166
Some ( t) => t. unix_timestamp ( ) as f64 ,
@@ -213,7 +212,7 @@ impl StreamingUploader for OpenDalStreamingUploader {
213
212
}
214
213
215
214
async fn finish ( mut self : Box < Self > ) -> ObjectResult < ( ) > {
216
- self . op . object ( & self . path ) . write ( self . buffer ) . await ?;
215
+ self . op . write ( & self . path , self . buffer ) . await ?;
217
216
218
217
Ok ( ( ) )
219
218
}
0 commit comments