@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
31 lines (29 loc) • 1.27 kB
JavaScript
import { useLogger } from "../logger/index.js";
import { getExtensionsPath } from "../extensions/lib/get-extensions-path.js";
import { access } from "node:fs/promises";
import path from "path";
import { useEnv } from "@directus/env";
import { toArray } from "@directus/utils";
import { constants } from "fs";
//#region src/utils/validate-storage.ts
async function validateStorage() {
const env = useEnv();
const logger = useLogger();
if (env["DB_CLIENT"] === "sqlite3") try {
await access(path.dirname(env["DB_FILENAME"]), constants.R_OK | constants.W_OK);
} catch {
logger.warn(`Directory for SQLite database file (${path.resolve(path.dirname(env["DB_FILENAME"]))}) is not read/writeable!`);
}
if (toArray(env["STORAGE_LOCATIONS"]).map((location) => env[`STORAGE_${location.toUpperCase()}_DRIVER`]).includes("local")) try {
await access(env["STORAGE_LOCAL_ROOT"], constants.R_OK | constants.W_OK);
} catch {
logger.warn(`Upload directory (${path.resolve(env["STORAGE_LOCAL_ROOT"])}) is not read/writeable!`);
}
if (!env["EXTENSIONS_LOCATION"]) try {
await access(getExtensionsPath(), constants.R_OK);
} catch {
logger.warn(`Extensions directory (${path.resolve(getExtensionsPath())}) is not readable!`);
}
}
//#endregion
export { validateStorage };