33 lines
865 B
JavaScript
33 lines
865 B
JavaScript
|
const axios = require('axios');
|
||
|
const config = require('../config');
|
||
|
const { Logger } = require('../utils/logger');
|
||
|
|
||
|
class StorageService {
|
||
|
constructor() {
|
||
|
this.api = axios.create({
|
||
|
baseURL: config.api.baseUrl,
|
||
|
timeout: config.global.requestTimeout,
|
||
|
headers: {
|
||
|
'Content-Type': 'application/json'
|
||
|
}
|
||
|
});
|
||
|
this.logger = new Logger('Storage');
|
||
|
}
|
||
|
|
||
|
async batchSave(newsItems) {
|
||
|
try {
|
||
|
const response = await this.api.post(config.api.endpoints.batchSave, {
|
||
|
items: newsItems,
|
||
|
source: 'multi-site-crawler'
|
||
|
});
|
||
|
|
||
|
this.logger.info(`批量保存成功: ${newsItems.length} 条`);
|
||
|
return response.data;
|
||
|
} catch (error) {
|
||
|
this.logger.error('批量保存失败', error.response?.data || error.message);
|
||
|
throw error;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = new StorageService();
|