|
|
@@ -288,23 +288,25 @@ module.exports = class GcsPersistor extends AbstractPersistor {
|
|
|
} while (query)
|
|
|
}
|
|
|
|
|
|
- async directorySize(bucketName, key) {
|
|
|
- let files
|
|
|
- const prefix = ensurePrefixIsDirectory(key)
|
|
|
-
|
|
|
+ async #listDirectory(bucketName, prefix) {
|
|
|
try {
|
|
|
const [response] = await this.storage
|
|
|
.bucket(bucketName)
|
|
|
.getFiles({ prefix })
|
|
|
- files = response
|
|
|
+ return response
|
|
|
} catch (err) {
|
|
|
throw PersistorHelper.wrapError(
|
|
|
err,
|
|
|
'failed to list objects in GCS',
|
|
|
- { bucketName, key },
|
|
|
+ { bucketName, prefix },
|
|
|
ReadError
|
|
|
)
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ async directorySize(bucketName, key) {
|
|
|
+ const prefix = ensurePrefixIsDirectory(key)
|
|
|
+ const files = await this.#listDirectory(bucketName, prefix)
|
|
|
|
|
|
return files.reduce(
|
|
|
(acc, file) => parseInt(file.metadata.size, 10) + acc,
|
|
|
@@ -312,6 +314,14 @@ module.exports = class GcsPersistor extends AbstractPersistor {
|
|
|
)
|
|
|
}
|
|
|
|
|
|
+ async listDirectoryKeys(bucketName, prefix) {
|
|
|
+ const files = await this.#listDirectory(
|
|
|
+ bucketName,
|
|
|
+ ensurePrefixIsDirectory(prefix)
|
|
|
+ )
|
|
|
+ return files.map(file => file.name)
|
|
|
+ }
|
|
|
+
|
|
|
async checkIfObjectExists(bucketName, key) {
|
|
|
try {
|
|
|
const [response] = await this.storage
|