using Infrastructure; using Infrastructure.Extensions; using Microsoft.Extensions.Configuration; using OpenAuth.App.Base; using OpenAuth.App.CodeTable; using OpenAuth.App.Request; using OpenAuth.App.FormScheme.FormHelpers; using OpenAuth.Repository; using OpenAuth.Repository.Domain; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using OpenAuth.App.BaseApp.Base; using static Dm.net.buffer.ByteArrayBuffer; namespace OpenAuth.App.DbTable { public class DbTableApp : SqlSugarBaseApp { private IConfiguration _configuration; public DbTableApp(ISugarUnitOfWork unitWork, ISimpleClient repository, IConfiguration configuration) : base(unitWork, repository, null) { _configuration = configuration; } /// /// 创建表信息 /// /// 数据库编码 /// 数据表信息 /// public Response AddTable(string dbcode, DbTableReq dbTableReq) { if (dbTableReq.DbColumnInfoList == null || !dbTableReq.DbColumnInfoList.Any()) throw new Exception("请添加数据列"); using (var db = this.CodeClient(dbcode, _configuration)) { var typeBuilder = db.DynamicBuilder().CreateClass(dbTableReq.TableName, new SugarTable() { TableName = dbTableReq.TableName, TableDescription = dbTableReq.Description }); dbTableReq.DbColumnInfoList.ForEach(u => { typeBuilder.CreateProperty(u.DbColumnName, typeof(string), new SugarColumn() { IsPrimaryKey = u.IsPrimarykey == 1, IsIdentity = u.IsIdentity == 1, ColumnDataType = u.DataType, Length = u.Length, IsNullable = u.IsNullable == 1, DecimalDigits = u.DecimalDigits, ColumnDescription = u.ColumnDescription, }); }); db.CodeFirst.InitTables(typeBuilder.BuilderType()); return new Response() { Code = 200, Result = true, Message = "创建成功" }; } } /// /// 创建字段 /// /// 数据库编码 /// 表字段 /// public Response AddColumn(string dbcode, DbColumnInput dbColumnInput) { using (var db = this.CodeClient(dbcode, _configuration)) { var column = new DbColumnInfo { ColumnDescription = dbColumnInput.ColumnDescription, DbColumnName = dbColumnInput.DbColumnName, IsIdentity = dbColumnInput.IsIdentity == 1, IsNullable = dbColumnInput.IsNullable == 1, IsPrimarykey = dbColumnInput.IsPrimarykey == 1, Length = dbColumnInput.Length, DecimalDigits = dbColumnInput.DecimalDigits, DataType = dbColumnInput.DataType }; db.DbMaintenance.AddColumn(dbColumnInput.TableName, column); db.DbMaintenance.AddColumnRemark(dbColumnInput.DbColumnName, dbColumnInput.TableName, dbColumnInput.ColumnDescription); if (column.IsPrimarykey) db.DbMaintenance.AddPrimaryKey(dbColumnInput.TableName, dbColumnInput.DbColumnName); return new Response() { Code = 200, Result = true, Message = "创建成功" }; } } } }