mirror of
https://github.com/swissmakers/swiss-datashare.git
synced 2026-04-11 10:27:01 +02:00
feat: put db and uploads in same folder
This commit is contained in:
@@ -4,7 +4,7 @@ generator client {
|
||||
|
||||
datasource db {
|
||||
provider = "sqlite"
|
||||
url = "file:./pingvin-share.db"
|
||||
url = "file:../data/pingvin-share.db"
|
||||
}
|
||||
|
||||
model User {
|
||||
|
||||
@@ -27,7 +27,7 @@ export class FileController {
|
||||
@UseGuards(JwtGuard, ShareOwnerGuard)
|
||||
@UseInterceptors(
|
||||
FileInterceptor("file", {
|
||||
dest: "./uploads/_temp/",
|
||||
dest: "./data/uploads/_temp/",
|
||||
})
|
||||
)
|
||||
async create(
|
||||
|
||||
@@ -8,7 +8,6 @@ import { JwtService } from "@nestjs/jwt";
|
||||
import { randomUUID } from "crypto";
|
||||
import * as fs from "fs";
|
||||
import * as mime from "mime-types";
|
||||
import { join } from "path";
|
||||
import { PrismaService } from "src/prisma/prisma.service";
|
||||
|
||||
@Injectable()
|
||||
@@ -29,10 +28,12 @@ export class FileService {
|
||||
|
||||
const fileId = randomUUID();
|
||||
|
||||
await fs.promises.mkdir(`./uploads/shares/${shareId}`, { recursive: true });
|
||||
await fs.promises.mkdir(`./data/uploads/shares/${shareId}`, {
|
||||
recursive: true,
|
||||
});
|
||||
fs.promises.rename(
|
||||
`./uploads/_temp/${file.filename}`,
|
||||
`./uploads/shares/${shareId}/${fileId}`
|
||||
`./data/uploads/_temp/${file.filename}`,
|
||||
`./data/uploads/shares/${shareId}/${fileId}`
|
||||
);
|
||||
|
||||
return await this.prisma.file.create({
|
||||
@@ -53,7 +54,7 @@ export class FileService {
|
||||
if (!fileMetaData) throw new NotFoundException("File not found");
|
||||
|
||||
const file = fs.createReadStream(
|
||||
join(process.cwd(), `uploads/shares/${shareId}/${fileId}`)
|
||||
`./data/uploads/shares/${shareId}/${fileId}`
|
||||
);
|
||||
|
||||
return {
|
||||
@@ -67,14 +68,14 @@ export class FileService {
|
||||
}
|
||||
|
||||
async deleteAllFiles(shareId: string) {
|
||||
await fs.promises.rm(`./uploads/shares/${shareId}`, {
|
||||
await fs.promises.rm(`./data/uploads/shares/${shareId}`, {
|
||||
recursive: true,
|
||||
force: true,
|
||||
});
|
||||
}
|
||||
|
||||
getZip(shareId: string) {
|
||||
return fs.createReadStream(`./uploads/shares/${shareId}/archive.zip`);
|
||||
return fs.createReadStream(`./data/uploads/shares/${shareId}/archive.zip`);
|
||||
}
|
||||
|
||||
getFileDownloadUrl(shareId: string, fileId: string) {
|
||||
|
||||
@@ -7,7 +7,7 @@ async function bootstrap() {
|
||||
app.useGlobalPipes(new ValidationPipe());
|
||||
app.useGlobalInterceptors(new ClassSerializerInterceptor(app.get(Reflector)));
|
||||
|
||||
await fs.promises.mkdir("./uploads/_temp", { recursive: true });
|
||||
await fs.promises.mkdir("./data/uploads/_temp", { recursive: true });
|
||||
|
||||
app.setGlobalPrefix("api");
|
||||
await app.listen(8080);
|
||||
|
||||
@@ -8,7 +8,7 @@ export class PrismaService extends PrismaClient {
|
||||
super({
|
||||
datasources: {
|
||||
db: {
|
||||
url: "file:./pingvin-share.db",
|
||||
url: "file:../data/pingvin-share.db",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
@@ -57,7 +57,7 @@ export class ShareService {
|
||||
}
|
||||
|
||||
async createZip(shareId: string) {
|
||||
const path = `./uploads/shares/${shareId}`;
|
||||
const path = `./data/uploads/shares/${shareId}`;
|
||||
|
||||
const files = await this.prisma.file.findMany({ where: { shareId } });
|
||||
const archive = archiver("zip", {
|
||||
|
||||
Reference in New Issue
Block a user