-
-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Allow File adapter to create file with specific locations or dynamic filenames #9557
base: alpha
Are you sure you want to change the base?
Changes from all commits
d46f1ce
cc7027e
ff9441f
1578b7b
e0015c1
a1ccce1
433423c
2c76b13
a6c2609
3d14641
f87169b
05b6ac6
21cb8e4
441c291
10eb23e
79eeda4
583699e
0581094
0f21073
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -31,12 +31,14 @@ export class FilesAdapter { | |
* @discussion the contentType can be undefined if the controller was not able to determine it | ||
* @param {object} options - (Optional) options to be passed to file adapter (S3 File Adapter Only) | ||
* - tags: object containing key value pairs that will be stored with file | ||
* - metadata: object containing key value pairs that will be sotred with file (https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-object-metadata.html) | ||
* - metadata: object containing key value pairs that will be stored with file (https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-object-metadata.html) | ||
* @discussion options are not supported by all file adapters. Check the your adapter's documentation for compatibility | ||
* @param {Config} config - (Optional) server configuration | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why would the whole Parse Server config be passed into the adapter? Or am I misreading this? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @mtrezza
There may be other situations in which the server config may be useful apart from customizing file paths and running getFileLocation, but I don't see why createFile shouldn't have access to it if getFileLocation does. If this was a smaller project I would probably have refactored adapter.createFile to use config as the first argument, but that had the potential to be fairly breaking and maybe its nicer for some people to use X.createFile('filename') In any case tacking it at the end was the compromise I made. In the current S3-adapter PR, this only allows getFileLocation to run inside and I didn't pass the parameters to generateKey. I would say though that removing that expectation and removing getFileLocation from the adapter would make the changes more explicit, but then [location] = createFile would not always match the call from getFileLocation (if it depended in any way on server parameters) |
||
* @discussion config may be passed to adapter to allow for more complex configuration and internal call of getFileLocation (if needed). This argument is not supported by all file adapters. Check the your adapter's documentation for compatibility | ||
* | ||
* @return {Promise} a promise that should fail if the storage didn't succeed | ||
* @return {Promise<{url?: string, name?: string, location?: string}>|Promise<undefined>} Either a plain promise that should fail if storage didn't succeed, or a promise resolving to an object containing url and/or an updated filename and/or location (if relevant) | ||
*/ | ||
createFile(filename: string, data, contentType: string, options: Object): Promise {} | ||
createFile(filename: string, data, contentType: string, options: Object, config: Config): Promise {} | ||
|
||
/** Responsible for deleting the specified file | ||
* | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you please split this into separate tests, each one with a distinct title to describe what it's testing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You also may want to take a look at the failing tests in the CI