* Created AzureDataModel
* Created Hangfire API
This commit is contained in:
31
AzureDataModel/AzureDataModel.csproj
Normal file
31
AzureDataModel/AzureDataModel.csproj
Normal file
@@ -0,0 +1,31 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="appsettings_Azure.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
40
AzureDataModel/AzureDbContext.cs
Normal file
40
AzureDataModel/AzureDbContext.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using TaskScheduler = AzureDataModel.Entities.TaskScheduler;
|
||||
|
||||
namespace AzureDataModel;
|
||||
|
||||
public class AzureDbContext : DbContext
|
||||
{
|
||||
public AzureDbContext(DbContextOptions<AzureDbContext> options)
|
||||
: base(options)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
var configuration = new ConfigurationBuilder()
|
||||
.SetBasePath(Directory.GetCurrentDirectory())
|
||||
.AddJsonFile("appsettings.json")
|
||||
.Build();
|
||||
|
||||
var connectionString = configuration.GetConnectionString("AzureConnection");
|
||||
optionsBuilder.UseAzureSql(connectionString, options => options.CommandTimeout(300));
|
||||
}
|
||||
|
||||
public DbSet<TaskScheduler> TaskSchedulers { get; set; }
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<TaskScheduler>()
|
||||
.HasKey(e => e.Id);
|
||||
|
||||
modelBuilder.Entity<TaskScheduler>()
|
||||
.Property(e => e.RowPointer)
|
||||
.HasDefaultValueSql("newid()");
|
||||
|
||||
modelBuilder.Entity<TaskScheduler>()
|
||||
.Property(e => e.CreateDate)
|
||||
.HasDefaultValueSql("getdate()");
|
||||
}
|
||||
}
|
||||
10
AzureDataModel/Dtos/TaskScheduler.cs
Normal file
10
AzureDataModel/Dtos/TaskScheduler.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace AzureDataModel.Dtos;
|
||||
|
||||
public class TaskSchedulerDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Path { get; set; }
|
||||
public string CronOptions { get; set; }
|
||||
public DateTime CreateDate { get; set; }
|
||||
}
|
||||
11
AzureDataModel/Entities/TaskScheduler.cs
Normal file
11
AzureDataModel/Entities/TaskScheduler.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace AzureDataModel.Entities;
|
||||
|
||||
public class TaskScheduler
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public Guid RowPointer { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Path { get; set; }
|
||||
public string CronOptions { get; set; }
|
||||
public DateTime CreateDate { get; set; }
|
||||
}
|
||||
12
AzureDataModel/MappingProfile.cs
Normal file
12
AzureDataModel/MappingProfile.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using AutoMapper;
|
||||
using AzureDataModel.Dtos;
|
||||
|
||||
namespace AzureDataModel;
|
||||
|
||||
public class MappingProfile : Profile
|
||||
{
|
||||
public MappingProfile()
|
||||
{
|
||||
CreateMap<TaskScheduler, TaskSchedulerDto>().ReverseMap();
|
||||
}
|
||||
}
|
||||
8
AzureDataModel/Services/ITaskSchedulerService.cs
Normal file
8
AzureDataModel/Services/ITaskSchedulerService.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using AzureDataModel.Dtos;
|
||||
|
||||
namespace AzureDataModel.Services;
|
||||
|
||||
public interface ITaskSchedulerService
|
||||
{
|
||||
Task<IEnumerable<TaskSchedulerDto>> GetTaskSchedulers();
|
||||
}
|
||||
53
AzureDataModel/Services/TaskSchedulerService.cs
Normal file
53
AzureDataModel/Services/TaskSchedulerService.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using AutoMapper;
|
||||
using AzureDataModel.Dtos;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using TaskScheduler = AzureDataModel.Entities.TaskScheduler;
|
||||
|
||||
namespace AzureDataModel.Services;
|
||||
|
||||
public class TaskSchedulerService(AzureDbContext context, IMapper mapper) : ITaskSchedulerService
|
||||
{
|
||||
public async Task<IEnumerable<TaskSchedulerDto>> GetTaskSchedulers()
|
||||
{
|
||||
return await context.TaskSchedulers.Select(x => mapper.Map<TaskSchedulerDto>(x)).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<TaskSchedulerDto?> GetTaskSchedulerById(Guid id)
|
||||
{
|
||||
TaskSchedulerDto? taskScheduler = await context.TaskSchedulers.Where(x => x.RowPointer == id)
|
||||
.Select(x => mapper.Map<TaskSchedulerDto>(x)).FirstOrDefaultAsync();
|
||||
return taskScheduler;
|
||||
}
|
||||
|
||||
public async Task<TaskSchedulerDto?> GetTaskSchedulerByTaskName(string taskName)
|
||||
{
|
||||
TaskSchedulerDto? taskScheduler = await context.TaskSchedulers.Where(x => x.Name == taskName)
|
||||
.Select(x => mapper.Map<TaskSchedulerDto>(x)).FirstOrDefaultAsync();
|
||||
return taskScheduler;
|
||||
}
|
||||
|
||||
public async Task<int> AddTaskScheduler(TaskSchedulerDto taskSchedulerDto)
|
||||
{
|
||||
TaskScheduler taskScheduler = mapper.Map<TaskScheduler>(taskSchedulerDto);
|
||||
context.TaskSchedulers.Add(taskScheduler);
|
||||
return await context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task<int> UpdateTaskScheduler(TaskSchedulerDto taskSchedulerDto)
|
||||
{
|
||||
TaskScheduler taskScheduler = mapper.Map<TaskScheduler>(taskSchedulerDto);
|
||||
context.TaskSchedulers.Update(taskScheduler);
|
||||
return await context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task<int> DeleteTaskScheduler(Guid id)
|
||||
{
|
||||
TaskScheduler? taskScheduler =
|
||||
await context.TaskSchedulers.Where(x => x.RowPointer == id).FirstOrDefaultAsync() ?? null;
|
||||
|
||||
if (taskScheduler == null) return 0;
|
||||
|
||||
context.TaskSchedulers.Remove(taskScheduler);
|
||||
return await context.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
5
AzureDataModel/appsettings_Azure.json
Normal file
5
AzureDataModel/appsettings_Azure.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"ConnectionStrings": {
|
||||
"AzureConnection": "Server=tcp:fakrosno-hangfire.database.windows.net,1433;Initial Catalog=FaKrosnoHangfire;Persist Security Info=False;User ID=fakrosno_hangfire@trentblaugranagmail.onmicrosoft.com;Password=juhrot-zigQuz-6jydpu;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication=\"Active Directory Password\";"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user