turns-00034.parquet:1803
dce7afa94072127393360b29
turn 5/11gpt-4o-2024-08-06EnglishRussia384 words
degenerate_repetitionAbsentFinal dense release
USER
```
const StorageModel = require('../models/storage-model');
class StorageService {
/** получить все записи из таблицы "storage" */
async getAllRecords() {
const list = await StorageModel.findAll();
return list;
}
/** создать запись в таблице "storage" */
async createRecord(payload) {
const data = await StorageModel.create(payload);
return data;
}
/** обновить запись в таблице "storage" */
async updateRecord(payload) {
let record = await StorageModel.findOne({ where: { id: payload.id } });
if (record) {
record.type = payload?.type || record.type;
record.address = payload?.address || record.address;
return await record.save();
}
throw new Error('Record not found');
}
/** удалить запись из таблице "storage" */
async removeRecord(recordId) {
const record = await StorageModel.destroy({ where: { id: recordId } });
return record;
}
}
module.exports = new StorageService();
```ASSISTANT
Опираясь на описание `StorageService`, мы можем создать контроллер для управления записями в таблице "storage". Этот контроллер будет обеспечивать взаимодействие с `StorageService` для выполнения CRUD операций.
```javascript
const StorageService = require('../services/storage-service');
class StorageController {
async getAllRecords(req, res) {
try {
const list = await StorageService.getAllRecords();
return res.status(200).json(list);
} catch (e) {
return res.status(500).json({ error: e.message });
}
}
async createRecord(req, res) {
try {
const record = await StorageService.createRecord(req.body);
return res.status(201).json(record); // Используем статус 201 для успешного создания
} catch (e) {
return res.status(500).json({ error: e.message });
}
}
async updateRecord(req, res) {
try {
const record = await StorageService.updateRecord(req.body);
return res.status(200).json(record);
} catch (e) {
return res.status(500).json({ error: e.message });
}
}
async removeRecord(req, res) {
try {
const recordId = req.params.id;
const record = await StorageService.removeRecord(recordId);
if (record) {
return res.status(200).json({ success: true });
} else {
return res.status(404).json({ error: "Record not found" });
}
} catch (e) {
return res.status(500).json({ error: e.message });
}
}
}
module.exports = new StorageController();
```
### Объяснение:
- **getAllRecords**: Метод получает все записи из таблицы "storage" и возвращает их в ответе со статусом 200.
- **createRecord**: Создает новую запись (склад) с данными из `req.body`, возвращает созданную запись и HTTP-статус 201, что указывает на успешное создание ресурса.
- **updateRecord**: Обновляет существующую запись на основе данных переданных в `req.body`. Возвращает обновлённую запись со статусом 200.
- **removeRecord**: Удаляет запись по идентификатору, полученному из параметров URL. Если запись удалена, возвращает сообщение об успехе с HTTP-статусом 200, иначе возвращает ошибку 404.
Этот контроллер обеспечивает корректное взаимодействие с клиентом, обрабатывая как успешные операции, так и возможные ошибки, предоставляя соответствующую информацию через HTTP-ответы.