mirror of
https://github.com/nsnail/NetAdmin.git
synced 2025-04-22 22:22:51 +08:00
feat: ✨ 将数据库结构同步和种子数据初始化作为命令行开关 (#78)
This commit is contained in:
parent
22628e79ca
commit
05ed3d3746
@ -4,4 +4,4 @@ EXPOSE 8080
|
|||||||
RUN apt update
|
RUN apt update
|
||||||
RUN apt install -y redis
|
RUN apt install -y redis
|
||||||
COPY ./dist/backend/NetAdmin.BizServer.Host/bin/Release/net8.0/publish .
|
COPY ./dist/backend/NetAdmin.BizServer.Host/bin/Release/net8.0/publish .
|
||||||
ENTRYPOINT redis-server --daemonize yes && dotnet NetAdmin.BizServer.Host.dll
|
ENTRYPOINT redis-server --daemonize yes && dotnet NetAdmin.BizServer.Host.dll -is
|
@ -42,7 +42,7 @@ docker run -p 8080:8080 nsnail/netadmin
|
|||||||
```
|
```
|
||||||
4. 运行后端WebApi
|
4. 运行后端WebApi
|
||||||
``` shell
|
``` shell
|
||||||
dotnet run --project ./src/backend/NetAdmin.BizServer.Host/NetAdmin.BizServer.Host.csproj --urls http://[::]:5010
|
dotnet run --project ./src/backend/NetAdmin.BizServer.Host/NetAdmin.BizServer.Host.csproj --urls http://[::]:5010 -is
|
||||||
```
|
```
|
||||||
5. 体验WebApi程序
|
5. 体验WebApi程序
|
||||||
- 浏览器打开 http://localhost:5010 ,将看到Swagger(Knife4jUI)界面
|
- 浏览器打开 http://localhost:5010 ,将看到Swagger(Knife4jUI)界面
|
||||||
|
21
src/backend/NetAdmin.BizServer.Host/CommandLineArgs.cs
Normal file
21
src/backend/NetAdmin.BizServer.Host/CommandLineArgs.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using Spectre.Console.Cli;
|
||||||
|
|
||||||
|
namespace NetAdmin.BizServer.Host;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 命令行参数
|
||||||
|
/// </summary>
|
||||||
|
public sealed class CommandLineArgs : CommandSettings
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 插入种子数据
|
||||||
|
/// </summary>
|
||||||
|
[CommandOption("-i|--insert-seed-data")]
|
||||||
|
public bool InsertSeedData { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 同步数据库结构
|
||||||
|
/// </summary>
|
||||||
|
[CommandOption("-s|--sync-structure")]
|
||||||
|
public bool SyncStructure { get; set; }
|
||||||
|
}
|
@ -15,10 +15,11 @@ public static class ServiceCollectionExtensions
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加 FreeSql
|
/// 添加 FreeSql
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static IServiceCollection AddFreeSql(this IServiceCollection me)
|
public static IServiceCollection AddFreeSqlWithArgs(this IServiceCollection me)
|
||||||
{
|
{
|
||||||
return me.AddFreeSql( //
|
return me.AddFreeSql( //
|
||||||
FreeSqlInitMethods.SyncStructure | FreeSqlInitMethods.InsertSeedData, freeSql => {
|
(Startup.Args.SyncStructure ? FreeSqlInitMethods.SyncStructure : FreeSqlInitMethods.None) |
|
||||||
|
(Startup.Args.InsertSeedData ? FreeSqlInitMethods.InsertSeedData : FreeSqlInitMethods.None), freeSql => {
|
||||||
// 数据权限过滤器
|
// 数据权限过滤器
|
||||||
_ = freeSql.GlobalFilter.ApplyOnlyIf<IFieldOwner>( //
|
_ = freeSql.GlobalFilter.ApplyOnlyIf<IFieldOwner>( //
|
||||||
Chars.FLG_GLOBAL_FILTER_DATA
|
Chars.FLG_GLOBAL_FILTER_DATA
|
||||||
|
@ -10,6 +10,14 @@
|
|||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"InitDB": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"commandLineArgs": "-is",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,25 +1,26 @@
|
|||||||
|
using NetAdmin.BizServer.Host;
|
||||||
using NetAdmin.BizServer.Host.Extensions;
|
using NetAdmin.BizServer.Host.Extensions;
|
||||||
using NetAdmin.Host.Extensions;
|
using NetAdmin.Host.Extensions;
|
||||||
using NetAdmin.Host.Middlewares;
|
using NetAdmin.Host.Middlewares;
|
||||||
|
using Spectre.Console.Cli;
|
||||||
|
using ValidationResult = Spectre.Console.ValidationResult;
|
||||||
#if !DEBUG
|
#if !DEBUG
|
||||||
using Prometheus;
|
using Prometheus;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace NetAdmin.BizServer.Host;
|
NetAdmin.Host.Startup.Entry<Startup>(args);
|
||||||
|
|
||||||
|
namespace NetAdmin.BizServer.Host
|
||||||
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 启动类
|
/// 启动类
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public sealed class Startup : NetAdmin.Host.Startup
|
public sealed class Startup : NetAdmin.Host.Startup, ICommand<CommandLineArgs>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 程序入口
|
/// 命令行参数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void Main(string[] args)
|
public static CommandLineArgs Args { get; private set; }
|
||||||
{
|
|
||||||
ShowBanner();
|
|
||||||
_ = Serve.Run(RunOptions.Default.WithArgs(args));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 配置应用程序中间件
|
/// 配置应用程序中间件
|
||||||
@ -56,7 +57,7 @@ public sealed class Startup : NetAdmin.Host.Startup
|
|||||||
.AddJwt() // 添加 Jwt 授权处理器
|
.AddJwt() // 添加 Jwt 授权处理器
|
||||||
.AddSnowflake() // 添加雪花编号生成器
|
.AddSnowflake() // 添加雪花编号生成器
|
||||||
.AddEventBus() // 添加事件总线
|
.AddEventBus() // 添加事件总线
|
||||||
.AddFreeSql() // 添加 freeSql
|
.AddFreeSqlWithArgs() // 添加 freeSql
|
||||||
.AddRemoteRequest() // 添加远程请求
|
.AddRemoteRequest() // 添加远程请求
|
||||||
.AddCorsAccessor() // 添加支持跨域访问
|
.AddCorsAccessor() // 添加支持跨域访问
|
||||||
.AddContextUser() // 添加上下文用户
|
.AddContextUser() // 添加上下文用户
|
||||||
@ -68,4 +69,29 @@ public sealed class Startup : NetAdmin.Host.Startup
|
|||||||
.AddDefaultApiResultHandler() // 添加默认的API结果处理程序
|
.AddDefaultApiResultHandler() // 添加默认的API结果处理程序
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
#pragma warning disable ASA001
|
||||||
|
public Task<int> Execute(CommandContext context, CommandLineArgs settings)
|
||||||
|
#pragma warning restore ASA001
|
||||||
|
{
|
||||||
|
Args = settings;
|
||||||
|
_ = Serve.Run(RunOptions.Default.WithArgs(context.Remaining.Raw.ToArray()));
|
||||||
|
return Task.FromResult(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
#pragma warning disable ASA001
|
||||||
|
public Task<int> Execute(CommandContext context, CommandSettings settings)
|
||||||
|
#pragma warning restore ASA001
|
||||||
|
{
|
||||||
|
return Execute(context, (settings as CommandLineArgs)!);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public ValidationResult Validate(CommandContext context, CommandSettings settings)
|
||||||
|
{
|
||||||
|
return ValidationResult.Success();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -5,7 +5,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="IGeekFan.AspNetCore.Knife4jUI.NS" Condition="'$(Configuration)' == 'Debug'" Version="0.0.15-ns2"/>
|
<PackageReference Include="IGeekFan.AspNetCore.Knife4jUI.NS" Condition="'$(Configuration)' == 'Debug'" Version="0.0.15-ns2"/>
|
||||||
<PackageReference Include="Spectre.Console.NS" Version="0.45.1-preview.0.124"/>
|
<PackageReference Include="Spectre.Console.Cli.NS" Version="0.45.1-preview.0.124"/>
|
||||||
<PackageReference Include="prometheus-net.AspNetCore" Condition="'$(Configuration)' != 'Debug'" Version="8.1.0"/>
|
<PackageReference Include="prometheus-net.AspNetCore" Condition="'$(Configuration)' != 'Debug'" Version="8.1.0"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@ -1,4 +1,5 @@
|
|||||||
using Spectre.Console;
|
using Spectre.Console;
|
||||||
|
using Spectre.Console.Cli;
|
||||||
|
|
||||||
namespace NetAdmin.Host;
|
namespace NetAdmin.Host;
|
||||||
|
|
||||||
@ -7,6 +8,21 @@ namespace NetAdmin.Host;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class Startup : AppStartup
|
public abstract class Startup : AppStartup
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 程序入口
|
||||||
|
/// </summary>
|
||||||
|
public static void Entry<T>(IEnumerable<string> args, Action<IConfigurator> commandConfig = null)
|
||||||
|
where T : class, ICommand
|
||||||
|
{
|
||||||
|
ShowBanner();
|
||||||
|
var app = new CommandApp<T>();
|
||||||
|
if (commandConfig != null) {
|
||||||
|
app.Configure(commandConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
_ = app.Run(args);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 打印Banner
|
/// 打印Banner
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user