# 0级数据接口使用说明

## 概述

0级数据接口模块是 `csst_dfs_client.level0`。该模块包含了搜索0级数据文件记录、将本地文件写入DFS等功能的函数。

## 函数列表

1. **find**
   - 功能:根据给定的参数搜索0级数据文件记录。
   - 参数:包括项目ID、观测ID、模块ID、探测器编号、文件类型、滤光片、观测时间范围、创建时间范围等。
   - 返回值:搜索结果对象。

2. **get_by_id**
   - 功能:通过0级数据内部ID获取对应的0级数据文件记录。
   - 参数:0级数据内部ID。
   - 返回值:查询结果对象。

3. **find_by_level0_id**
   - 功能:通过0级数据ID获取对应的0级数据文件记录。
   - 参数:0级数据ID。
   - 返回值:查询结果对象。

4. **update_qc0_status**
   - 功能:更新0级数据的QC0状态。
   - 参数:0级数据ID、文件类型、QC0状态、数据集名称(可选)。
   - 返回值:操作结果对象,包含操作是否成功以及相关的错误信息。
  
5. **update_prc_status**
   - 功能:更新0级数据的处理状态。
   - 参数:0级数据ID、文件类型、处理状态、数据集名称(可选)。
   - 返回值:操作结果对象,包含操作是否成功以及相关的错误信息。

6. **write**
   - 功能:将本地文件写入DFS中。
   - 参数:本地文件路径、数据集名称(可选)、其他可选的关键字参数。
   - 返回值:操作结果对象,包含操作是否成功以及相关的错误信息。

7. **write_cat**
   - 功能:将主巡天仿真数据的星表本地文件写入DFS中。
   - 参数:本地文件路径、数据集名称(可选)、其他可选的关键字参数。
   - 返回值:操作结果对象,包含操作是否成功以及相关的错误信息。

8. **process_list**
   - 功能:通过0级数据ID获取对应的0级数据处理记录。
   - 参数:0级数据ID。
   - 返回值:查询结果对象。
  
9. **add_process**
   - 功能:添加0级数据处理记录。
   - 参数:0级数据ID、管线ID、运行ID、数据集名称(可选)
   - 返回值:操作结果对象,包含操作是否成功以及相关的错误信息。

## 使用示例

### 1.搜索0级数据文件记录

```python
from csst_dfs_client import level0

# 搜索0级数据文件记录
result = level0.find(obs_id='some_obs_id', module_id='MSC', page=1, limit=10)
print(result) # result.data为list类型,包含0级数据文件记录列表
```

### 2. 通过0级数据内部ID获取对应的0级数据文件记录

```python
from csst_dfs_client import level0
result = level0.get_by_id(_id='some_internal_id')
print(result) # result.data为0级数据文件单条记录
```

### 3. 通过0级数据ID获取对应的0级数据

```python

from csst_dfs_client import level0
result = level0.find_by_level0_id(level0_id='some_level0_id')
print(result) # result.data为list类型,包含0级数据的列表
```

### 4. 更新0级数据的QC0状态 

```python
from csst_dfs_client import level0
result = level0.update_qc0_status(level0_id='some_level0_id', filetype='SCI', qc0_status=1)
print(result)
```

### 5. 更新0级数据的处理状态

```python
from csst_dfs_client import level0
result = level0.update_prc_status(level0_id='some_level0_id', filetype='SCI', prc_status=1)
print(result)
```

### 6.将本地文件写入DFS

```python
from csst_dfs_client import level0

# 将本地文件写入DFS
local_file_path = 'path/to/your/level0_data.fits'
dataset = 'default_dataset'  # 可选参数,默认为None
result = level0.write(local_file_path, dataset=dataset)
print(result)
```

### 7.将主巡天仿真数据的星表本地文件写入DFS

```python
from csst_dfs_client import level0

# 将主巡天仿真数据的星表本地文件写入DFS
local_catalog_file_path = 'path/to/your/catalog.cat'
dataset = 'default_dataset'  # 可选参数,默认为None
result = level0.write_cat(local_catalog_file_path, dataset=dataset)
print(result)
```

### 8. 通过0级数据ID获取对应的0级数据处理记录

```python
from csst_dfs_client import level0
result = level0.process_list(level0_id='some_level0_id')
print(result)# result.data为list类型,包含0级数据处理记录列表

```

### 9. 添加0级数据处理记录

```python

from csst_dfs_client import level0
result = level0.add_process(
      level0_id='some_level0_id', 
      dag_id='some_dag_id', 
      dag_run_id='some_dag_run_id', 
      batch_id='some_batch_id',
      dataset='default_dataset',
      prc_status=1,
      prc_time='2024-11-07 10:24:12',
      prc_module='some_function_name',
      message='some_message')
print(result)
```

- [其他接口](./usage.md)