// Copyright (c) 2026 GeWuYou // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. using GFramework.Core.Abstractions.utility; namespace GFramework.Game.Abstractions.data; /// /// 定义数据仓库接口,提供异步的数据加载、保存、检查存在性和删除操作 /// public interface IDataRepository : IUtility { /// /// 异步加载指定类型的数据对象 /// /// 要加载的数据类型,必须实现IData接口并具有无参构造函数 /// 返回加载的数据对象的Task Task LoadAsync() where T : class, IData, new(); /// /// 根据类型异步加载数据 /// /// 要加载的数据类型 /// 异步操作任务,返回实现IData接口的数据对象 Task LoadAsync(Type type); /// /// 异步保存指定的数据对象 /// /// 要保存的数据类型,必须实现IData接口 /// 要保存的数据对象 /// 表示异步保存操作的Task Task SaveAsync(T data) where T : class, IData; /// /// 异步检查指定类型的数据是否存在 /// /// 要检查的数据类型,必须实现IData接口 /// 返回表示数据是否存在布尔值的Task Task ExistsAsync() where T : class, IData; /// /// 异步删除指定类型的数据 /// /// 要删除的数据类型,必须实现IData接口 /// 表示异步删除操作的Task Task DeleteAsync() where T : class, IData; /// /// 批量保存多个数据 /// /// 要保存的数据列表,实现IData接口的对象集合 /// 异步操作任务 Task SaveAllAsync(IEnumerable dataList); }