Compare commits

...

2 Commits

Author SHA1 Message Date
89e215aec3 Migrape API to NET8
Use entity schema from root, add controller, add CORS for proxy
2024-09-20 10:54:32 +05:00
b5688b9b94 Move entity schema
Move classes for work with DB in root dir. Fix problems with num cycles, after change to Enum
2024-09-20 10:51:24 +05:00
13 changed files with 152 additions and 71 deletions

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web"> <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
@ -6,4 +6,14 @@
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<Compile Include="..\DbCycleVDP\DbFurnace.cs" Link="Db/DbFurnace.cs" />
<Compile Include="..\DbCycleVDP\TableCycle.cs" Link="Db/TableCycle.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.2" />
</ItemGroup>
</Project> </Project>

View File

@ -1,6 +0,0 @@
@APICycleVDP_HostAddress = http://localhost:5127
GET {{APICycleVDP_HostAddress}}/weatherforecast/
Accept: application/json
###

View File

@ -0,0 +1,71 @@
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using DbCycleVDP;
namespace APICycleVDP.Controller
{
[EnableCors("All")]
public class CyclesController : ControllerBase
{
[HttpPost]
public ActionResult<string> CurrCycles()
{
var result = new JObject
{
["currTime"] = DateTime.Now
};
var tasks = new List<Task<TableCycle>>();
//var v = new DB.WorkDB();
for (var i = 1; i <= 48; i++)
tasks.Add(WorkDB.GetCycle(i));
var arr = new JArray();
for (var i = 0; i < tasks.Count; i++)
{
var tmp = tasks[i].GetAwaiter().GetResult();
if (tmp != null)
{
var t = new JObject();
t["vdp"] = tmp.NumVdp;
t["cycle"] = tmp.NumCycle;
t["factStart"] = tmp.FactStart;
t["factEnd"] = tmp.FactEnd;
t["thinkEnd"] = tmp.ThinkEnd;
arr.Add(t);
}
}
result["data"] = arr;
return Content(result.ToString(), "application/json");
}
}
public static class WorkDB
{
async public static Task<TableCycle> GetCycle(int vdp)
{
var result = new TableCycle();
await Task.Run(() =>
{
try
{
using var db = new DbFurnace();
var tmp = (from u in db.Cycles
where
u.NumVdp == vdp
orderby u.FactStart descending
select u).FirstOrDefault();
result = tmp;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
});
return result;
}
}
}

View File

@ -1,27 +1,22 @@
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
var summaries = new[] builder.Services.AddControllers();
builder.Services.AddCors(options =>
{ {
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" options.AddPolicy("AllowAllOrigins",
}; builder =>
{
app.MapGet("/weatherforecast", () => builder.AllowAnyOrigin()
{ .AllowAnyMethod()
var forecast = Enumerable.Range(1, 5).Select(index => .AllowAnyHeader();
new WeatherForecast });
(
DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
))
.ToArray();
return forecast;
}); });
app.Run(); var app = builder.Build();
internal record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary) app.UseCors("AllowAllOrigins");
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); app.MapControllerRoute(name: "CurrCycles", pattern: "/currcycles",
} defaults: new { controller = "Cycles", action = "CurrCycles" });
app.Run();

View File

@ -13,8 +13,8 @@
"commandName": "Project", "commandName": "Project",
"dotnetRunMessages": true, "dotnetRunMessages": true,
"launchBrowser": true, "launchBrowser": true,
"launchUrl": "weatherforecast", "launchUrl": "currcycles",
"applicationUrl": "http://localhost:5127", "applicationUrl": "http://localhost:65041",
"environmentVariables": { "environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development" "ASPNETCORE_ENVIRONMENT": "Development"
} }
@ -22,7 +22,7 @@
"IIS Express": { "IIS Express": {
"commandName": "IISExpress", "commandName": "IISExpress",
"launchBrowser": true, "launchBrowser": true,
"launchUrl": "weatherforecast", "launchUrl": "currcycles",
"environmentVariables": { "environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development" "ASPNETCORE_ENVIRONMENT": "Development"
} }

View File

@ -1,4 +1,11 @@
{ {
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://*:65041"
}
}
},
"Logging": { "Logging": {
"LogLevel": { "LogLevel": {
"Default": "Information", "Default": "Information",

24
DbCycleVDP/DbFurnace.cs Normal file
View File

@ -0,0 +1,24 @@
using System;
using Microsoft.EntityFrameworkCore;
namespace DbCycleVDP
{
public class DbFurnace : DbContext
{
public DbSet<TableCycle> Cycles { get; set; }
public DbFurnace()
{
Database.EnsureCreated();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// optionsBuilder.UseMySql("server=127.0.0.1;user=diplom;password=diplom;database=VDPCycles;", new MySqlServerVersion(new Version(8, 0)));
optionsBuilder.UseMySql("server=37.79.216.218;user=mytest;password=mytest;database=VDPCycles;", new MySqlServerVersion(new Version(8, 0)));
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
}
}

View File

@ -2,10 +2,10 @@
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
namespace GenCycleVDP.Db namespace DbCycleVDP
{ {
[Table("Cycles")] [Table("Cycles")]
internal class DbCycle public class TableCycle
{ {
[Column("idCycle"), Required, Key] [Column("idCycle"), Required, Key]
public int IdCycle { get; set; } public int IdCycle { get; set; }

View File

@ -1,23 +0,0 @@
using System;
using Microsoft.EntityFrameworkCore;
namespace GenCycleVDP.Db
{
internal class DbFurnace : DbContext
{
public DbSet<DbCycle> Cycles { get; set; }
public DbFurnace()
{
Database.EnsureCreated();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySql("server=127.0.0.1;user=diplom;password=diplom;database=VDPCycles;", new MySqlServerVersion(new Version(8, 0)));
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
}
}

View File

@ -2,6 +2,7 @@
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using GenCycleVDP.Resources; using GenCycleVDP.Resources;
using DbCycleVDP;
namespace GenCycleVDP namespace GenCycleVDP
{ {
@ -78,7 +79,7 @@ namespace GenCycleVDP
{ {
try try
{ {
using var db = new Db.DbFurnace(); using var db = new DbFurnace();
var tmp = (from u in db.Cycles var tmp = (from u in db.Cycles
where where
u.NumVdp == vdp u.NumVdp == vdp
@ -122,19 +123,17 @@ namespace GenCycleVDP
{ {
try try
{ {
using (var db = new Db.DbFurnace()) using var db = new DbFurnace();
var tmp = new TableCycle()
{ {
var tmp = new Db.DbCycle() NumVdp = vdp,
{ NumCycle = (int)currCycle,
NumVdp = vdp, FactStart = factStart,
NumCycle = (int)currCycle, FactEnd = factEnd,
FactStart = factStart, ThinkEnd = thinkEnd
FactEnd = factEnd, };
ThinkEnd = thinkEnd db.Cycles.Add(tmp);
}; db.SaveChanges();
db.Cycles.Add(tmp);
db.SaveChanges();
}
} }
catch (Exception e) catch (Exception e)
{ {

View File

@ -7,6 +7,11 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<Compile Include="..\DbCycleVDP\DbFurnace.cs" Link="Db/DbFurnace.cs" />
<Compile Include="..\DbCycleVDP\TableCycle.cs" Link="Db/TableCycle.cs" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.2" /> <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.2" />
</ItemGroup> </ItemGroup>

View File

@ -17,7 +17,6 @@ namespace GenCycleVDP
a.Start(); a.Start();
tasks.Add(a); tasks.Add(a);
} }
Task.Delay(1000 * 5).Wait();
int count = 0; int count = 0;
while (!isExiting) while (!isExiting)

View File

@ -1,6 +1,6 @@
namespace GenCycleVDP.Resources namespace GenCycleVDP.Resources
{ {
public enum CycleStatus : ushort public enum CycleStatus : int
{ {
EndTechCycle = 0, EndTechCycle = 0,
LoadUnload = 1, LoadUnload = 1,