EvalueTonSavoir/server/models/images.js

75 lines
1.9 KiB
JavaScript
Raw Normal View History

2024-03-29 20:08:34 -04:00
const { ObjectId } = require('mongodb');
class Images {
constructor(db) {
this.db = db;
}
2024-03-29 20:08:34 -04:00
async upload(file, userId) {
await this.db.connect()
const conn = this.db.getConnection();
2024-03-29 20:08:34 -04:00
const imagesCollection = conn.collection('images');
const newImage = {
userId: userId,
file_name: file.originalname,
file_content: file.buffer.toString('base64'),
mime_type: file.mimetype,
created_at: new Date()
};
const result = await imagesCollection.insertOne(newImage);
return result.insertedId;
}
async get(id) {
await this.db.connect()
const conn = this.db.getConnection();
2024-03-29 20:08:34 -04:00
const imagesCollection = conn.collection('images');
2024-10-03 12:05:20 -04:00
const result = await imagesCollection.findOne({ _id: ObjectId.createFromHexString(id) });
2024-03-29 20:08:34 -04:00
if (!result) return null;
return {
file_name: result.file_name,
file_content: Buffer.from(result.file_content, 'base64'),
mime_type: result.mime_type
};
}
2025-02-24 20:26:30 -05:00
async getImages(page, limit) {
2025-02-22 17:56:53 -05:00
await this.db.connect()
const conn = this.db.getConnection();
const imagesCollection = conn.collection('images');
2025-02-25 17:38:23 -05:00
const result = await imagesCollection.find({}).sort({created_at: 1}).toArray();
2025-02-22 17:56:53 -05:00
if (!result) return null;
2025-03-02 20:52:08 -05:00
const total = result.length;
2025-02-24 20:26:30 -05:00
const objImages = result.slice((page - 1) * limit, page * limit).map(image => ({
2025-02-25 17:38:23 -05:00
id: image._id,
user: image.userId,
2025-02-22 17:56:53 -05:00
file_name: image.file_name,
2025-02-25 17:38:23 -05:00
file_content: image.file_content.toString('base64'),
2025-02-22 17:56:53 -05:00
mime_type: image.mime_type
}));
2025-03-02 20:52:08 -05:00
let respObj = {
images: objImages,
total: total
}
return respObj;
2025-02-22 17:56:53 -05:00
}
2024-03-29 20:08:34 -04:00
}
module.exports = Images;