You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
4.1 KiB
C#

5 months ago
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<Repository.Domain.DbCodeTable, SugarDbContext>
{
private IConfiguration _configuration;
public DbTableApp(ISugarUnitOfWork<SugarDbContext> unitWork, ISimpleClient<Repository.Domain.DbCodeTable> repository, IConfiguration configuration) : base(unitWork, repository, null)
{
_configuration = configuration;
}
/// <summary>
/// 创建表信息
/// </summary>
/// <param name="dbcode">数据库编码</param>
/// <param name="dbTableReq">数据表信息</param>
/// <returns></returns>
public Response<bool> 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<bool>()
{
Code = 200,
Result = true,
Message = "创建成功"
};
}
}
/// <summary>
/// 创建字段
/// </summary>
/// <param name="dbcode">数据库编码</param>
/// <param name="dbColumnInput">表字段</param>
/// <returns></returns>
public Response<bool> 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<bool>()
{
Code = 200,
Result = true,
Message = "创建成功"
};
}
}
}
}