Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,29 +1,31 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<PackageId>ScheduleMaster</PackageId>
<Authors>HOHO</Authors>
<Product>ScheduleMaster</Product>
<Description>ScheduleMaster task entry.</Description>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>2.2.0</Version>
<RepositoryUrl>https://github.com/hey-hoho/ScheduleMasterCore</RepositoryUrl>
<RepositoryType>github</RepositoryType>
<PackageIconUrl>https://imgkr.cn-bj.ufileos.com/1dac6c35-4511-46b0-88d1-95e43c7a4b0c.png</PackageIconUrl>
<PackageTags>netcore, schedule, quartz, task</PackageTags>
<PackageProjectUrl>https://github.com/hey-hoho/ScheduleMasterCore</PackageProjectUrl>
<AssemblyVersion>2.2.0.0</AssemblyVersion>
<FileVersion>2.2.0.0</FileVersion>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable>
<PackageId>ScheduleMaster</PackageId>
<Authors>HOHO</Authors>
<Product>ScheduleMaster</Product>
<Description>ScheduleMaster task entry.</Description>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>2.2.0</Version>
<RepositoryUrl>https://github.com/hey-hoho/ScheduleMasterCore</RepositoryUrl>
<RepositoryType>github</RepositoryType>
<PackageIconUrl>https://imgkr.cn-bj.ufileos.com/1dac6c35-4511-46b0-88d1-95e43c7a4b0c.png</PackageIconUrl>
<PackageTags>netcore, schedule, quartz, task</PackageTags>
<PackageProjectUrl>https://github.com/hey-hoho/ScheduleMasterCore</PackageProjectUrl>
<AssemblyVersion>2.2.0.0</AssemblyVersion>
<FileVersion>2.2.0.0</FileVersion>
</PropertyGroup>

<ItemGroup>
<Folder Include="Utility\" />
</ItemGroup>
<ItemGroup>
<Folder Include="Utility\" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.6" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.6" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;

namespace Hos.ScheduleMaster.Core
{
Expand Down Expand Up @@ -34,7 +31,7 @@ static ConfigurationCache()
/// <param name="configuration"></param>
public static void SetNode(IConfiguration configuration)
{
NodeSetting = configuration.GetSection("NodeSetting").Get<NodeSetting>();
NodeSetting = configuration.GetSection("NodeSetting").Get<NodeSetting>();

string identity = AppCommandResolver.GetCommandLineArgsValue("identity");
if (!string.IsNullOrEmpty(identity))
Expand Down Expand Up @@ -221,12 +218,18 @@ public class DbConnector
public DbProvider Provider { get; set; }

public string ConnectionString { get; set; }

/// <summary>
/// 数据库版本
/// </summary>
public string Version { get; set; }
}

public enum DbProvider
{
MySQL,
SQLServer,
PostgreSQL
PostgreSQL,
Oracle
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,77 +17,81 @@ namespace Hos.ScheduleMaster.Core.Models
{
public class SmDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);

optionsBuilder.UseDatabase();
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);

//字段类型适配
modelBuilder.FixColumnsDataType<ScheduleDelayedEntity>();
modelBuilder.FixColumnsDataType<ScheduleEntity>();
modelBuilder.FixColumnsDataType<ScheduleExecutorEntity>();
modelBuilder.FixColumnsDataType<ScheduleHttpOptionEntity>();
modelBuilder.FixColumnsDataType<ScheduleKeeperEntity>();
modelBuilder.FixColumnsDataType<ScheduleLockEntity>();
modelBuilder.FixColumnsDataType<ScheduleReferenceEntity>();
modelBuilder.FixColumnsDataType<ScheduleTraceEntity>();
modelBuilder.FixColumnsDataType<ServerNodeEntity>();
modelBuilder.FixColumnsDataType<SystemConfigEntity>();
modelBuilder.FixColumnsDataType<SystemLogEntity>();
modelBuilder.FixColumnsDataType<SystemUserEntity>();
modelBuilder.FixColumnsDataType<TraceStatisticsEntity>();
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);

optionsBuilder.UseDatabase();
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);

//字段类型适配
modelBuilder.FixColumnsDataType<ScheduleDelayedEntity>();
modelBuilder.FixColumnsDataType<ScheduleEntity>();
modelBuilder.FixColumnsDataType<ScheduleExecutorEntity>();
modelBuilder.FixColumnsDataType<ScheduleHttpOptionEntity>();
modelBuilder.FixColumnsDataType<ScheduleKeeperEntity>();
modelBuilder.FixColumnsDataType<ScheduleLockEntity>();
modelBuilder.FixColumnsDataType<ScheduleReferenceEntity>();
modelBuilder.FixColumnsDataType<ScheduleTraceEntity>();
modelBuilder.FixColumnsDataType<ServerNodeEntity>();
modelBuilder.FixColumnsDataType<SystemConfigEntity>();
modelBuilder.FixColumnsDataType<SystemLogEntity>();
modelBuilder.FixColumnsDataType<SystemUserEntity>();
modelBuilder.FixColumnsDataType<TraceStatisticsEntity>();


//创建索引
modelBuilder.CreateIndexes();

//初始化数据
//初始化数据
modelBuilder.SeedData();
}
public virtual DbSet<ScheduleDelayedEntity> ScheduleDelayeds { get; set; }
}
public virtual DbSet<ScheduleDelayedEntity> ScheduleDelayeds { get; set; }

public virtual DbSet<ScheduleEntity> Schedules { get; set; }

public virtual DbSet<ScheduleEntity> Schedules { get; set; }
public virtual DbSet<ScheduleExecutorEntity> ScheduleExecutors { get; set; }

public virtual DbSet<ScheduleExecutorEntity> ScheduleExecutors { get; set; }
public virtual DbSet<ScheduleHttpOptionEntity> ScheduleHttpOptions { get; set; }

public virtual DbSet<ScheduleHttpOptionEntity> ScheduleHttpOptions { get; set; }
public virtual DbSet<ScheduleKeeperEntity> ScheduleKeepers { get; set; }

public virtual DbSet<ScheduleKeeperEntity> ScheduleKeepers { get; set; }
public virtual DbSet<ScheduleLockEntity> ScheduleLocks { get; set; }

public virtual DbSet<ScheduleLockEntity> ScheduleLocks { get; set; }
public virtual DbSet<ScheduleReferenceEntity> ScheduleReferences { get; set; }

public virtual DbSet<ScheduleReferenceEntity> ScheduleReferences { get; set; }
public virtual DbSet<ScheduleTraceEntity> ScheduleTraces { get; set; }

public virtual DbSet<ScheduleTraceEntity> ScheduleTraces { get; set; }
public virtual DbSet<ServerNodeEntity> ServerNodes { get; set; }

public virtual DbSet<ServerNodeEntity> ServerNodes { get; set; }
public virtual DbSet<SystemConfigEntity> SystemConfigs { get; set; }

public virtual DbSet<SystemConfigEntity> SystemConfigs { get; set; }
public virtual DbSet<SystemLogEntity> SystemLogs { get; set; }

public virtual DbSet<SystemLogEntity> SystemLogs { get; set; }
public virtual DbSet<SystemUserEntity> SystemUsers { get; set; }

public virtual DbSet<SystemUserEntity> SystemUsers { get; set; }
public virtual DbSet<TraceStatisticsEntity> TraceStatisticss { get; set; }

public virtual DbSet<TraceStatisticsEntity> TraceStatisticss { get; set; }


/// <summary>
/// <summary>
/// 获取数据库当前时间函数
/// </summary>
public string GetDbNowDateTime
{
get
{
if (ConfigurationCache.DbConnector.Provider == DbProvider.SQLServer)
if (ConfigurationCache.DbConnector.Provider == DbProvider.SQLServer)
{
return "getdate()";
}
if (ConfigurationCache.DbConnector.Provider == DbProvider.Oracle)
{
return "( SELECT SYSDATE FROM DUAL )";
}
return "now()";
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
using Hos.ScheduleMaster.Core;
using Hos.ScheduleMaster.Core.Common;
using Hos.ScheduleMaster.Core.Models;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Microsoft.Extensions.DependencyInjection
{
Expand All @@ -16,7 +11,8 @@ public static void AddScheduleMasterDb(this IServiceCollection services, IConfig
ConfigurationCache.DbConnector = new DbConnector
{
Provider = (DbProvider)Enum.Parse(typeof(DbProvider), configuration["DbConnector:Provider"] ?? "mysql", true),
ConnectionString = configuration["DbConnector:ConnectionString"]
ConnectionString = configuration["DbConnector:ConnectionString"],
Version = configuration["DbConnector:Version"],
};

services.AddDbContext<SmDbContext>();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Text;
using Hos.ScheduleMaster.Core.Common;
using Hos.ScheduleMaster.Core.Models;
using Hos.ScheduleMaster.Core.Common;
using System.Reflection;
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Reflection;

namespace Hos.ScheduleMaster.Core.EntityFramework
{
Expand Down Expand Up @@ -149,7 +145,7 @@ public static ModelBuilder SeedData(this ModelBuilder builder)
);
return builder;
}

/// <summary>
/// 应用数据库
/// </summary>
Expand All @@ -158,19 +154,21 @@ public static ModelBuilder SeedData(this ModelBuilder builder)
public static DbContextOptionsBuilder UseDatabase(this DbContextOptionsBuilder builder)
{
var conn = ConfigurationCache.DbConnector.ConnectionString;
var ver = ConfigurationCache.DbConnector.Version;
switch (ConfigurationCache.DbConnector.Provider)
{
case DbProvider.SQLServer:
builder.UseSqlServer(conn);
break;
case DbProvider.MySQL:
builder.UseMySql(conn);
break;
case DbProvider.PostgreSQL:
builder.UseNpgsql(conn);
break;
case DbProvider.Oracle:
builder.UseOracle(conn, b => b.UseOracleSQLCompatibility(ver)); ;
break;
case DbProvider.MySQL:
default:
builder.UseMySql(conn);
builder.UseMySql(conn, new MySqlServerVersion(ver));
break;
}
return builder;
Expand Down Expand Up @@ -207,6 +205,10 @@ public static ModelBuilder FixColumnsDataType<T>(this ModelBuilder builder) wher
{
builer.Property(item.Name).HasColumnType(type.Replace("varchar(max)", "text"));
}
if (dbProvider == DbProvider.Oracle)
{
builer.Property(item.Name).HasColumnType(type.Replace("varchar(max)", "clob"));
}
}
}
});
Expand All @@ -222,15 +224,15 @@ public static ModelBuilder FixColumnsDataType<T>(this ModelBuilder builder) wher
/// <returns></returns>
public static ModelBuilder CreateIndexes(this ModelBuilder builder)
{
builder.Entity<ScheduleTraceEntity>().HasIndex(p => p.ScheduleId).HasName("scheduletraces_scheduleid_index");
builder.Entity<ScheduleTraceEntity>().HasIndex(p => p.StartTime).HasName("scheduletraces_starttime_index");
builder.Entity<ScheduleTraceEntity>().HasIndex(p => p.Result).HasName("scheduletraces_result_index");
builder.Entity<ScheduleTraceEntity>().HasIndex(p => p.ScheduleId).HasDatabaseName("scheduletraces_scheduleid_index");
builder.Entity<ScheduleTraceEntity>().HasIndex(p => p.StartTime).HasDatabaseName("scheduletraces_starttime_index");
builder.Entity<ScheduleTraceEntity>().HasIndex(p => p.Result).HasDatabaseName("scheduletraces_result_index");

builder.Entity<SystemLogEntity>().HasIndex(p => p.TraceId).HasName("systemlogs_traceid_index");
builder.Entity<SystemLogEntity>().HasIndex(p => p.CreateTime).HasName("systemlogs_createtime_index");
builder.Entity<SystemLogEntity>().HasIndex(p => p.TraceId).HasDatabaseName("systemlogs_traceid_index");
builder.Entity<SystemLogEntity>().HasIndex(p => p.CreateTime).HasDatabaseName("systemlogs_createtime_index");

builder.Entity<ScheduleDelayedEntity>().HasIndex(p => p.CreateTime).HasName("scheduledelayeds_createtime_index");
builder.Entity<ScheduleDelayedEntity>().HasIndex(p => p.ContentKey).HasName("scheduledelayeds_contentkey_index");
builder.Entity<ScheduleDelayedEntity>().HasIndex(p => p.CreateTime).HasDatabaseName("scheduledelayeds_createtime_index");
builder.Entity<ScheduleDelayedEntity>().HasIndex(p => p.ContentKey).HasDatabaseName("scheduledelayeds_contentkey_index");

return builder;
}
Expand Down
Loading