Skip to content

Commit

Permalink
1. 将时序数据库进行剥离
Browse files Browse the repository at this point in the history
2. 将数据库访问移动到子目录中
3.将扩展进行分类,尽可能通用。 减少干涉。
  • Loading branch information
maikebing committed Sep 12, 2022
1 parent 5d8a015 commit 1f1a4df
Show file tree
Hide file tree
Showing 64 changed files with 4,698 additions and 249 deletions.
22 changes: 5 additions & 17 deletions IoTSharp/AppSettings.cs → IoTSharp.Contracts/AppSettings.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
using CoAP;
using DotNetCore.CAP.Dashboard.NodeDiscovery;
using EFCore.Sharding;

using IoTSharp.Data;
using IoTSharp.X509Extensions;
using MaiKeBing.HostedService.ZeroMQ;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
Expand Down Expand Up @@ -72,32 +68,24 @@ public class AppSettings
/// </summary>
public MqttClientSetting MqttClient { get; set; } = new MqttClientSetting() { MqttBroker = "built-in", UserName = Guid.NewGuid().ToString(), Password = Guid.NewGuid().ToString(), Port = 1883 };
public Dictionary<string, string> ConnectionStrings { get; set; }
public CoapConfig CoapServer { get; set; } = new CoapConfig();

public ModBusServerSetting ModBusServer { get; set; } = new ModBusServerSetting();

public TelemetryStorage TelemetryStorage { get; set; } = TelemetryStorage.SingleTable;

public ShardingSetting Sharding { get; set; } = new ShardingSetting();

public EventBusStore EventBusStore { get; set; } = EventBusStore.InMemory;
public EventBusMQ EventBusMQ { get; set; } = EventBusMQ.InMemory;
public int ConsumerThreadCount { get; set; } = Environment.ProcessorCount;
public int DbContextPoolSize { get; set; } = 128;
public CachingUseIn CachingUseIn { get; set; } = CachingUseIn.InMemory;
public string CachingUseRedisHosts { get; set; }
public DiscoveryOptions Discovery { get; set; } = null;
public ZMQOption ZMQOption { get; set; } = null;
//public DiscoveryOptions Discovery { get; set; } = null;
//public ZMQOption ZMQOption { get; set; } = null;
public int SucceedMessageExpiredAfter { get; set; } = 3600 * 6;
public DataBaseType DataBase { get; set; } = DataBaseType.PostgreSql;
public int RuleCachingExpiration { get; set; } = 60;
public string SilkierUsername { get; set; }
public string SilkierPassword { get; set; }
}

public class ShardingSetting
{
public DatabaseType DatabaseType { get; set; } = DatabaseType.PostgreSql;
public ExpandByDateMode ExpandByDateMode { get; set; } = ExpandByDateMode.PerMonth;

}
public class ModBusServerSetting
{
Expand Down
File renamed without changes.
13 changes: 13 additions & 0 deletions IoTSharp.Contracts/IoTSharp.Contracts.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>

</Project>
11 changes: 11 additions & 0 deletions IoTSharp.Contracts/TelemetryDataDto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace IoTSharp.Contracts
{
public class TelemetryDataDto
{
public string KeyName { get; set; }

public DateTime DateTime { get; set; }
public Data.DataType DataType { get; set; }
public object Value { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
using IoTSharp.Data;
using IoTSharp.Dtos;
using IoTSharp.Extensions;
using IoTSharp.Contracts;
using IoTSharp.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Dic = System.Collections.Generic.Dictionary<string, System.Exception>;

using Microsoft.EntityFrameworkCore.Infrastructure;

namespace IoTSharp.Storage
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using IoTSharp.Data;
using IoTSharp.Dtos;
using Microsoft.AspNetCore.Mvc;
using IoTSharp.Contracts;
using IoTSharp.Data;
using System;
using System.Collections.Generic;
using System.Linq;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
using hyjiacan.py4n;
using InfluxDB.Client;
using InfluxDB.Client;
using InfluxDB.Client.Api.Domain;
using InfluxDB.Client.Core.Flux.Domain;
using InfluxDB.Client.Writes;
using IoTSharp.Contracts;
using IoTSharp.Data;
using IoTSharp.Dtos;
using IoTSharp.Extensions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.ObjectPool;
using Microsoft.Extensions.Options;
using Org.BouncyCastle.Utilities.Encoders;
using Silkier;
using Silkier.EFCore;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
using Apache.IoTDB.Data;
using Apache.IoTDB.DataStructure;
using IoTSharp.Contracts;
using IoTSharp.Data;
using IoTSharp.Dtos;
using IoTSharp.Extensions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Silkier;
using Silkier.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
Expand Down
27 changes: 27 additions & 0 deletions IoTSharp.Data.TimeSeries/IoTSharp.Data.TimeSeries.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>

<PackageReference Include="Apache.IoTDB.Data" Version="0.13.0.8" />

<PackageReference Include="EFCore.Sharding" Version="6.0.7" />

<PackageReference Include="hyjiacan.pinyin4net" Version="4.1.1" />

<PackageReference Include="InfluxDB.Client" Version="4.5.0" />
<PackageReference Include="IoTSharp.Data.Taos" Version="2.6.2" />
<PackageReference Include="PinusDB" Version="1.0.10" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\IoTSharp.Contracts\IoTSharp.Contracts.csproj" />
<ProjectReference Include="..\IoTSharp.Data\IoTSharp.Data.csproj" />
<ProjectReference Include="..\IoTSharp.Extensions.EFCore\IoTSharp.Extensions.EFCore.csproj" />
<ProjectReference Include="..\IoTSharp.Extensions\IoTSharp.Extensions.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
using hyjiacan.py4n;
using IoTSharp.Contracts;
using IoTSharp.Data;
using IoTSharp.Dtos;
using IoTSharp.Extensions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.ObjectPool;
using Microsoft.Extensions.Options;
using Org.BouncyCastle.Utilities.Encoders;
using PinusDB.Data;
using Silkier.EFCore;
using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace IoTSharp.Storage
{

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using EFCore.Sharding;
using IoTSharp.Contracts;
using IoTSharp.Data;
using IoTSharp.Dtos;
using IoTSharp.Extensions;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
using hyjiacan.py4n;
using IoTSharp.Data;
using IoTSharp.Dtos;
using IoTSharp.Extensions;
using IoTSharp.Data;
using IoTSharp.Data.Taos;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.ObjectPool;
using Microsoft.Extensions.Options;
using Org.BouncyCastle.Utilities.Encoders;
using Silkier;
using Silkier.EFCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using IoTSharp.Contracts;
using IoTSharp.Extensions;
using hyjiacan.py4n;

namespace IoTSharp.Storage
{

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using IoTSharp.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Silkier.EFCore;
using System.Collections.Generic;
using System.Threading.Tasks;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,30 +1,26 @@
using IoTSharp.Data;
using IoTSharp.Dtos;
using Microsoft.AspNetCore.Routing.Matching;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using IoTSharp.Contracts;
using IoTSharp.Data;

using Microsoft.EntityFrameworkCore;
using MQTTnet;
using Newtonsoft.Json.Linq;
using Org.BouncyCastle.Crypto.Modes.Gcm;
using Org.BouncyCastle.Utilities.Encoders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Dic = System.Collections.Generic.Dictionary<string, System.Exception>;

namespace IoTSharp.Extensions
namespace IoTSharp.Data
{
public static class DataExtension
{
internal static (bool ok, Device device) GetDeviceByTokenWithTenantCustomer(this ApplicationDbContext _context, string access_token)
public static (bool ok, Device device) GetDeviceByTokenWithTenantCustomer(this ApplicationDbContext _context, string access_token)
{
var deviceIdentity = from id in _context.DeviceIdentities.Include(di => di.Device) where id.IdentityId == access_token && id.IdentityType == IdentityType.AccessToken select id;
var devices = from dev in _context.Device.Include(g=>g.Customer).Include(g=>g.Tenant) where deviceIdentity.Any() && dev.Id == deviceIdentity.FirstOrDefault().Device.Id select dev;
bool ok = deviceIdentity == null || !devices.Any();
return (ok, devices.FirstOrDefault());
}
internal static (bool ok, Device device) GetDeviceByToken(this ApplicationDbContext _context, string access_token)
public static (bool ok, Device device) GetDeviceByToken(this ApplicationDbContext _context, string access_token)
{
var deviceIdentity = from id in _context.DeviceIdentities.Include(di => di.Device) where id.IdentityId == access_token && id.IdentityType == IdentityType.AccessToken select id;
var devices = from dev in _context.Device where deviceIdentity.Any() && dev.Id == deviceIdentity.FirstOrDefault().Device.Id select dev;
Expand All @@ -40,7 +36,7 @@ internal static (bool ok, Device device) GetDeviceByToken(this ApplicationDbCont
/// <param name="deviceId"></param>
/// <param name="_context"></param>
/// <returns></returns>
internal static async Task<(int ret, Dic exceptions)> SaveAsync<L>(this ApplicationDbContext _context, Dictionary<string, object> data, Guid deviceId, DataSide dataSide) where L : DataStorage, new()
public static async Task<(int ret, Dic exceptions)> SaveAsync<L>(this ApplicationDbContext _context, Dictionary<string, object> data, Guid deviceId, DataSide dataSide) where L : DataStorage, new()
{
Dic exceptions = _context.PreparingData<L>(data, deviceId, dataSide);
int ret = await _context.SaveChangesAsync();
Expand All @@ -55,7 +51,7 @@ internal static (bool ok, Device device) GetDeviceByToken(this ApplicationDbCont
/// <param name="deviceId"></param>
/// <param name="dataSide"></param>
/// <returns></returns>
internal static Dic PreparingData<L>(this ApplicationDbContext _context, Dictionary<string, object> data, Guid deviceId, DataSide dataSide)
public static Dic PreparingData<L>(this ApplicationDbContext _context, Dictionary<string, object> data, Guid deviceId, DataSide dataSide)
where L : DataStorage, new()
{

Expand Down Expand Up @@ -176,7 +172,7 @@ public static object JValueToObject(this JValue value)
}
return obj;
}
internal static void FillKVToMe<T>(this T tdata, KeyValuePair<string, object> kp) where T : IDataStorage
public static void FillKVToMe<T>(this T tdata, KeyValuePair<string, object> kp) where T : IDataStorage
{
var tc = Type.GetTypeCode(kp.Value.GetType());

Expand Down Expand Up @@ -271,10 +267,7 @@ internal static void FillKVToMe<T>(this T tdata, KeyValuePair<string, object> kp
break;
}
}
public static Dictionary<string, object> ConvertPayloadToDictionary(this MqttApplicationMessage msg)
{
return JToken.Parse(msg.ConvertPayloadToString()??"{}")?.JsonToDictionary();
}


public static Dictionary<string, object> JsonToDictionary(this JToken jojb)
{
Expand Down
Loading

0 comments on commit 1f1a4df

Please sign in to comment.