# API参考

本文档提供IT资产模型管理库的核心API参考文档，包括主要接口和数据模型的详细说明。

## 核心接口

### 1. DomainManager 接口

`DomainManager` 是整个库的核心接口，提供域名管理的所有功能：

| 方法名 | 描述 | 参数 | 返回值 |
|-------|------|------|-------|
| `initialize()` | 初始化域名管理器 | 无 | `Promise<void>` |
| `create()` | 创建新域名 | `CreateDomainData` 对象 | `Promise<Domain>` |
| `findAll()` | 查询所有域名 | 无 | `Promise<Domain[]>` |
| `findById()` | 根据ID查询域名 | 域名ID (string) | `Promise<Domain \| null>` |
| `find()` | 条件查询域名 | 查询参数对象 | `Promise<Domain[]>` |
| `update()` | 更新域名 | ID (string), 更新数据 | `Promise<Domain>` |
| `delete()` | 删除域名 | 域名ID (string) | `Promise<void>` |
| `toggleStatus()` | 切换域名启用状态 | 域名ID (string) | `Promise<Domain>` |
| `release()` | 释放资源 | 无 | `Promise<void>` |

### 2. StorageAdapter 接口

`StorageAdapter` 是存储抽象层的基础接口，定义了统一的数据访问方法：

- `initialize(config: StorageConfig)`: 初始化存储适配器
- `create(collection: string, data: any)`: 创建文档
- `find(collection: string, query?: QueryCondition, options?: QueryOptions)`: 查找文档
- `findOne(collection: string, query: QueryCondition)`: 查找单个文档
- `update(collection: string, id: string, data: any)`: 更新文档
- `delete(collection: string, id: string)`: 删除文档
- `close()`: 关闭存储适配器

## 数据模型

### Domain 模型

域名模型定义了IT资产管理中的域名资源数据结构：

```typescript
interface Domain {
  id: string;                // 唯一标识符
  name: string;              // 域名名称
  description: string;       // 描述信息
  targetAddress: string;     // 目标地址
  recordType: DnsRecordType; // DNS记录类型
  ttl: number;               // 生存时间
  priority?: number;         // 优先级（用于MX和SRV记录）
  admin?: string;            // 管理员信息
  enabled: boolean;          // 是否启用
  createdAt: Date;           // 创建时间
  updatedAt: Date;           // 更新时间
  createdBy?: string;        // 创建者
  updatedBy?: string;        // 更新者
  tags?: string[];           // 标签
  metadata?: Record<string, any>; // 元数据
}
```

### DnsRecordType 枚举

支持10种DNS记录类型：

- `A`: IPv4地址记录
- `AAAA`: IPv6地址记录
- `CNAME`: 别名记录
- `MX`: 邮件交换记录
- `NS`: 名称服务器记录
- `PTR`: 指针记录
- `SOA`: 起始授权记录
- `SRV`: 服务定位记录
- `TXT`: 文本记录
- `CAA`: 认证授权记录

## 查询与过滤

### 查询条件

库支持多种查询条件和操作符：

```typescript
// 查询条件示例
const conditions = [
  { field: 'enabled', operator: 'eq', value: true },
  { field: 'recordType', operator: 'in', value: ['A', 'CNAME'] },
  { field: 'ttl', operator: 'gte', value: 3600 }
];
```

支持的操作符包括：`eq`, `neq`, `lt`, `lte`, `gt`, `gte`, `in`, `nin`, `like`, `contains` 等。

### 排序选项

```typescript
// 排序选项示例
const sort = [
  { field: 'createdAt', order: 'desc' },
  { field: 'name', order: 'asc' }
];
```

### 分页选项

```typescript
// 分页选项
const pagination = {
  skip: 0,     // 跳过的记录数
  limit: 10    // 返回的最大记录数
};
```

---

## 相关文档

- [安装与构建指南](./installation-guide.md) - 详细的安装和构建步骤
- [使用教程](./usage-guide.md) - 全面的使用示例和代码片段
- [架构与项目结构](./architecture-guide.md) - 详细的系统架构和项目组织说明
- [存储扩展指南](./storage-extension-guide.md) - 详细说明如何开发和集成自定义存储适配器
- [模型层接口规范](./模型层接口规范.md) - 详细描述所有接口参数和返回值规范