feat: working @payloadcms/plugin-cloud-storage

This commit is contained in:
Alessio Gravili
2024-03-04 14:08:43 -05:00
parent df887dc0e9
commit caa8d9c0ed
26 changed files with 631 additions and 321 deletions

View File

@@ -3,7 +3,7 @@
MONGODB_URI=mongodb://localhost/payload-plugin-cloud-storage
PAYLOAD_PUBLIC_SERVER_URL=http://localhost:3000
PAYLOAD_SECRET=45ligj345ligj4wl5igj4lw5igj45ligj45wlijl
PAYLOAD_CONFIG_PATH=src/payload.config.ts
PAYLOAD_CONFIG_PATH=config.ts
AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://localhost:10000/devstoreaccount1;QueueEndpoint=http://localhost:10001/devstoreaccount1;
AZURE_STORAGE_CONTAINER_NAME=az-media
@@ -15,6 +15,7 @@ S3_ACCESS_KEY_ID=payloadAccessKey
S3_SECRET_ACCESS_KEY=alwiejglaiwhewlihgawe
S3_BUCKET=payload-bucket
S3_FORCE_PATH_STYLE=true
S3_REGION=us-east-1
GCS_ENDPOINT=http://localhost:4443
GCS_PROJECT_ID=test
@@ -28,3 +29,4 @@ R2_BUCKET=payload-bucket
R2_FORCE_PATH_STYLE=
PAYLOAD_DROP_DATABASE=true
PAYLOAD_PUBLIC_CLOUD_STORAGE_ADAPTER=s3

View File

@@ -3,7 +3,7 @@ import type { CollectionConfig } from '../../../packages/payload/src/collections
export const Media: CollectionConfig = {
slug: 'media',
upload: {
disableLocalStorage: false, // don't save me
disableLocalStorage: true, // don't save me
resizeOptions: {
position: 'center',
width: 200,

View File

@@ -1,3 +1,4 @@
import * as AWS from '@aws-sdk/client-s3'
import dotenv from 'dotenv'
import path from 'path'
@@ -16,9 +17,13 @@ let adapter: Adapter
let uploadOptions
dotenv.config({
path: path.resolve(__dirname, '.env.emulated'),
path: path.resolve(process.cwd(), './test/plugin-cloud-storage/.env.emulated'),
})
console.log(
`Using plugin-cloud-storage adapter: ${process.env.PAYLOAD_PUBLIC_CLOUD_STORAGE_ADAPTER}`,
)
if (process.env.PAYLOAD_PUBLIC_CLOUD_STORAGE_ADAPTER === 'azure') {
adapter = azureBlobStorageAdapter({
connectionString: process.env.AZURE_STORAGE_CONNECTION_STRING,
@@ -79,37 +84,9 @@ if (process.env.PAYLOAD_PUBLIC_CLOUD_STORAGE_ADAPTER === 'r2') {
})
}
console.log(
`Using plugin-cloud-storage adapter: ${process.env.PAYLOAD_PUBLIC_CLOUD_STORAGE_ADAPTER}`,
)
export default buildConfigWithDefaults({
collections: [Media, Users],
upload: uploadOptions,
admin: {
webpack: (config) => ({
...config,
resolve: {
...config.resolve,
alias: {
...config?.resolve?.alias,
[path.resolve(__dirname, '../../packages/plugin-cloud-storage/src/index')]: path.resolve(
__dirname,
'../../packages/plugin-cloud-storage/src/admin/mock.js',
),
[path.resolve(__dirname, '../../packages/plugin-cloud-storage/src/adapters/s3/index')]:
path.resolve(__dirname, '../../packages/plugin-cloud-storage/src/adapters/s3/mock.js'),
[path.resolve(__dirname, '../../packages/plugin-cloud-storage/src/adapters/gcs/index')]:
path.resolve(__dirname, '../../packages/plugin-cloud-storage/src/adapters/gcs/mock.js'),
[path.resolve(__dirname, '../../packages/plugin-cloud-storage/src/adapters/azure/index')]:
path.resolve(
__dirname,
'../../packages/plugin-cloud-storage/src/adapters/azure/mock.js',
),
},
},
}),
},
plugins: [
cloudStorage({
collections: {
@@ -120,6 +97,24 @@ export default buildConfigWithDefaults({
}),
],
onInit: async (payload) => {
/*const client = new AWS.S3({
endpoint: process.env.S3_ENDPOINT,
forcePathStyle: process.env.S3_FORCE_PATH_STYLE === 'true',
region: process.env.S3_REGION,
credentials: {
accessKeyId: process.env.S3_ACCESS_KEY_ID,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
},
})
const makeBucketRes = await client.send(
new AWS.CreateBucketCommand({ Bucket: 'payload-bucket' }),
)
if (makeBucketRes.$metadata.httpStatusCode !== 200) {
throw new Error(`Failed to create bucket. ${makeBucketRes.$metadata.httpStatusCode}`)
}*/
await payload.create({
collection: 'users',
data: {