# 扩展指南

本指南将帮助您了解如何扩展IT资产模型管理库的功能，特别是如何开发自定义存储适配器。

## 自定义存储适配器开发

IT资产模型管理库的核心优势之一是支持自定义存储适配器，您可以实现特定的存储逻辑（如连接数据库、云存储等）：

### 步骤1：创建自定义适配器类

实现`StorageAdapter`接口：

```typescript
import { StorageAdapter, QueryCondition, SortOption, Domain, StorageRegistry } from 'it-assets-management-models';

// 创建自定义适配器类
class CustomStorageAdapter implements StorageAdapter {
  async init(): Promise<void> {
    // 初始化存储连接（如数据库连接）
    console.log('初始化自定义存储适配器');
  }

  async findAll(): Promise<Domain[]> {
    // 实现查询所有域名的逻辑
    return [];
  }

  async findById(id: string): Promise<Domain | null> {
    // 实现根据ID查询域名
    return null;
  }

  async find(conditions: QueryCondition[], sort?: SortOption[]): Promise<Domain[]> {
    // 实现条件查询
    return [];
  }

  async create(data: Partial<Domain>): Promise<Domain> {
    // 实现创建域名
    return { /* 返回创建的域名对象 */ } as Domain;
  }

  async update(id: string, data: Partial<Domain>): Promise<Domain> {
    // 实现更新域名
    return { /* 返回更新后的域名对象 */ } as Domain;
  }

  async delete(id: string): Promise<void> {
    // 实现删除域名的逻辑
  }

  async release(): Promise<void> {
    // 释放资源（如关闭数据库连接）
    console.log('释放自定义存储适配器资源');
  }
}
```

### 步骤2：注册自定义适配器

使用`StorageRegistry`注册您的适配器：

```typescript
// 注册自定义适配器
StorageRegistry.register('custom-db', CustomStorageAdapter);
```

### 步骤3：使用自定义适配器

```typescript
// 使用自定义适配器
const config = {
  adapter: 'custom-db'
};

const domainManager = DomainManager.create(config);
```

## 插件开发

除了直接实现适配器，您还可以通过插件系统扩展存储能力：

1. 实现`StoragePlugin`接口
2. 通过`StoragePluginLoader`加载插件
3. 插件将在运行时注册其提供的适配器

## 数据模型扩展

如果您需要扩展现有数据模型，可以通过以下方式实现：

1. 继承现有模型接口
2. 利用模型的元数据（metadata）字段存储自定义属性
3. 扩展DomainManager接口以支持新字段的特定操作

---

## 相关文档

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