Files
cunkebao_v3/Moncter/app/repository/DataCollectionTaskRepository.php
2026-01-05 10:16:20 +08:00

113 lines
3.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\repository;
use MongoDB\Laravel\Eloquent\Model;
/**
* 数据采集任务仓储
*
* 对应集合data_collection_tasks
* 存储所有通过前端配置创建的采集任务
*/
class DataCollectionTaskRepository extends Model
{
/**
* 指定使用的数据库连接
*
* @var string
*/
protected $connection = 'mongodb';
/**
* 集合名
*
* @var string
*/
protected $table = 'data_collection_tasks';
/**
* 主键字段
*
* @var string
*/
protected $primaryKey = 'task_id';
/**
* 主键非自增
*
* @var bool
*/
public $incrementing = false;
/**
* 主键类型
*
* @var string
*/
protected $keyType = 'string';
/**
* 允许批量赋值的字段
*
* @var array<int, string>
*/
protected $fillable = [
'task_id',
'name',
'description',
'data_source_id', // 源数据源ID
'database', // 源数据库
'collection', // 源集合(单集合模式)
'collections', // 源集合列表(多集合模式)
'target_data_source_id', // 目标数据源ID
'target_database', // 目标数据库
'target_collection', // 目标集合
'target_type', // 目标类型consumption_record消费记录、generic通用集合
'mode', // batch: 批量采集, realtime: 实时监听
'field_mappings', // 字段映射配置(单集合模式)
'collection_field_mappings', // 字段映射配置(多集合模式)
'lookups', // 连表查询配置(单集合模式)
'collection_lookups', // 连表查询配置(多集合模式)
'filter_conditions', // 过滤条件
'schedule', // 调度配置
'status', // pending: 待启动, running: 运行中, paused: 已暂停, stopped: 已停止, error: 错误
'progress', // 进度信息
'statistics', // 统计信息
'created_by',
'created_at',
'updated_at',
];
/**
* 字段类型转换
*
* @var array<string, string>
*
* 注意MongoDB 原生支持数组类型,不需要对数组字段进行 cast
* 如果进行 cast当数据已经是数组时Laravel 可能会尝试使用 Json cast 导致错误
*/
protected $casts = [
// 数组字段不进行 cast让 MongoDB 直接处理
// 'field_mappings' => 'array',
// 'collection_field_mappings' => 'array',
// 'lookups' => 'array',
// 'collection_lookups' => 'array',
// 'filter_conditions' => 'array',
// 'schedule' => 'array',
// 'progress' => 'array',
// 'statistics' => 'array',
// 'collections' => 'array',
'created_at' => 'datetime',
'updated_at' => 'datetime',
];
/**
* 启用 Laravel 默认时间戳
*
* @var bool
*/
public $timestamps = true;
}