using CloudBuilder.Core.Application.Builders;
using CloudBuilder.Core.Policy;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CloudBuilder.Core.DatabaseAccessor.Entity
{
    public interface IApplicationService
    {
        CloudBuilderBuilder CloudBuilder { get; set; }
        IConfiguration Configuration { get; }
        /// <summary>
        /// 服务提供器
        /// </summary>
        IServiceProvider ServiceProvider { get; }

        /// <summary>
        /// 登录ID
        /// </summary>
        string UserId { get; set; }
        string Locale { get; set; }
        /// <summary>
        /// 事务
        /// </summary>
        IUnitOfWork UnitOfWork { get; set; }
        /// <summary>
        /// 数据仓库
        /// </summary>
        /// <typeparam name="K"></typeparam>
        /// <returns></returns>
        K GetRepository<K>();
    }
}
