using System;
using System.Collections.Generic;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using MongoDB.Bson.Serialization.Conventions;
using xDataService.Configuration;
using xDataService.Constants;
using xDataService.Db;
using xDataService.Models;
namespace xDataService.Interfaces
{
///
/// Data Base Descriptor ...
///
public interface IXDatabaseDescriptor
{
//
#region Props ...
///
/// Database Name ...
///
///
string Name { get; set; }
///
/// Database Provider ...
///
///
XDbProviders Provider { get; set; }
///
/// Db Context Type ...
///
///
Type Context { get; set; }
///
/// Database Connecion String ...
///
///
string ConnectionString { get; set; }
///
/// Data Service Configuration ...
///
///
XDataBaseConfiguration Configuration { get; set; }
///
/// Repositories Descriptions ...
///
///
IList Repositories { get; set; }
///
/// Mongo Convention Packs ...
///
ConventionPack ConventionPacks { get; set; }
///
/// DbContext Options Builder ...
///
///
Action OptionsBuilder { get; set; }
#endregion
//
#region Configure ...
///
/// Configure Database Descriptor using Registered Services ...
///
///
void Configure(
IServiceCollection services
);
///
/// Configure Database Descriptor using IConfiguration ...
///
///
void Configure(
IConfiguration configuration
);
///
/// Configure Database Descriptor using Database Configuration ...
///
///
void Configure(
XDataBaseConfiguration configuration
);
///
/// Configure Database Descriptor using Provider and Connection String ...
///
///
///
void Configure(
XDbProviders provider,
string connectionString
);
#endregion
}
///
/// Data Base Descriptor ...
///
///
public interface IXDatabaseDescriptor : IXDatabaseDescriptor
where TContext : XDbContext
{ }
}