Skip to content

Commit

Permalink
feat: Add node filesystem driver
Browse files Browse the repository at this point in the history
  • Loading branch information
becem-gharbi committed Oct 3, 2023
1 parent 91d3294 commit 05ef28f
Show file tree
Hide file tree
Showing 8 changed files with 32 additions and 6 deletions.
1 change: 1 addition & 0 deletions playground/nuxt.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export default defineNuxtConfig({
endpoint: process.env.NUXT_S3_ENDPOINT,
region: process.env.NUXT_S3_REGION,
secretAccessKey: process.env.NUXT_S3_SECRET_ACCESS_KEY,
driver: "fs",
//accept: "^image/(png|jpeg|png|gif)",
},
devtools: { enabled: true },
Expand Down
5 changes: 5 additions & 0 deletions src/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ export default defineNuxtModule<ModuleOptions>({
endpoint: options.endpoint,
region: options.region,
bucket: options.bucket,
driver: options.driver,
},
public: {
s3: {
Expand Down Expand Up @@ -94,6 +95,10 @@ export default defineNuxtModule<ModuleOptions>({
runtimeDir,
"server/utils"
)}').getKey`,
`const storage: typeof import('${resolve(
runtimeDir,
"server/utils"
)}').storage`,
"}",
].join("\n"),
});
Expand Down
4 changes: 2 additions & 2 deletions src/runtime/server/api/mutation/create.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { defineEventHandler } from "#imports";
import { normalizeKey, s3Storage, getKey } from "#s3";
import { normalizeKey, storage, getKey } from "#s3";
import { readMultipartFormData, createError } from "h3";

export default defineEventHandler(async (event) => {
Expand All @@ -12,7 +12,7 @@ export default defineEventHandler(async (event) => {
if (file && file.type) {
const normalizedKey = normalizeKey(key);

await s3Storage.setItemRaw(normalizedKey, file.data, {
await storage.setItemRaw(normalizedKey, file.data, {
type: file.type,
});

Expand Down
4 changes: 2 additions & 2 deletions src/runtime/server/api/mutation/delete.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { defineEventHandler } from "#imports";
import { s3Storage, getKey, normalizeKey } from "#s3";
import { storage, getKey, normalizeKey } from "#s3";

export default defineEventHandler(async (event) => {
const key = getKey(event);

const normalizedKey = normalizeKey(key);

await s3Storage.removeItem(normalizedKey);
await storage.removeItem(normalizedKey);

return "ok";
});
4 changes: 2 additions & 2 deletions src/runtime/server/api/query/read.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { defineEventHandler } from "#imports";
import { s3Storage, getKey, normalizeKey } from "#s3";
import { storage, getKey, normalizeKey } from "#s3";
import type { H3Event } from "h3";

export default defineEventHandler((event: H3Event) => {
const key = getKey(event);

const normalizedKey = normalizeKey(key);

return s3Storage.getItemRaw(normalizedKey, { event });
return storage.getItemRaw(normalizedKey, { event });
});
1 change: 1 addition & 0 deletions src/runtime/server/utils/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * from "./s3";
export * from "./key";
export * from "./storage";
19 changes: 19 additions & 0 deletions src/runtime/server/utils/storage.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { useRuntimeConfig } from "#imports";
import { s3Storage } from "./s3";
import { createStorage } from "unstorage";
import fsLiteDriver from "unstorage/drivers/fs-lite";
import type { Storage } from "unstorage";

const config = useRuntimeConfig();

let storage: Storage;

if (config.s3.driver === "s3") {
storage = s3Storage;
} else if (config.s3.driver === "fs") {
storage = createStorage({
driver: fsLiteDriver({ base: "./uploads" }),
});
}

export { storage };
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 05ef28f

Please sign in to comment.