Skip to content
This repository was archived by the owner on Oct 8, 2023. It is now read-only.

Commit cb335de

Browse files
author
MustafaLeithy
authored
Merge pull request #6 from Microsoft/feature/performance-improvements
Performance fixes and Geofence Bug Fix
2 parents 4cdd0a7 + 39be65f commit cb335de

19 files changed

+350
-127
lines changed

Backend/src/Trackable.EntityFramework/GeoFenceUpdateData.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.ComponentModel.DataAnnotations;
1+
using System.ComponentModel.DataAnnotations;
42
using System.ComponentModel.DataAnnotations.Schema;
5-
using System.Data.Entity.Spatial;
63

74
namespace Trackable.EntityFramework
85
{
96
[Table("GeoFenceUpdates")]
107
public class GeoFenceUpdateData : EntityBase<int>
118
{
129
[Required]
10+
[Index("IX_GeoFenceDataId")]
11+
[Index("GeoFenceAssetUnique", IsUnique = true, Order = 0)]
1312
public int GeoFenceDataId { get; set; }
1413

1514
[Required]
15+
[Index("IX_AssetDataId")]
16+
[Index("GeoFenceAssetUnique", IsUnique = true, Order = 1)]
1617
public string AssetDataId { get; set; }
1718

1819
[Required]

Backend/src/Trackable.EntityFramework/Migrations/201802071124064_GeofenceUpdates-UniqueGeofenceId.Designer.cs

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
namespace Trackable.EntityFramework.Migrations
2+
{
3+
using System;
4+
using System.Data.Entity.Migrations;
5+
6+
public partial class GeofenceUpdatesUniqueGeofenceId : DbMigration
7+
{
8+
public override void Up()
9+
{
10+
DropIndex("dbo.GeoFenceUpdates", new[] { "GeoFenceDataId" });
11+
DropIndex("dbo.GeoFenceUpdates", new[] { "AssetDataId" });
12+
13+
//For uniqueness constraint to pass
14+
Sql(@"
15+
DELETE FROM GeoFenceUpdates
16+
WHERE Id <> (SELECT max(Id)
17+
FROM GeofenceUpdates g2
18+
WHERE g2.GeoFenceDataId = GeoFenceUpdates.GeoFenceDataId and g2.AssetDataId = GeoFenceUpdates.AssetDataId)");
19+
20+
CreateIndex("dbo.GeoFenceUpdates", new[] { "GeoFenceDataId", "AssetDataId" }, unique: true, name: "GeoFenceAssetUnique");
21+
CreateIndex("dbo.GeoFenceUpdates", "GeoFenceDataId");
22+
CreateIndex("dbo.GeoFenceUpdates", "AssetDataId");
23+
}
24+
25+
public override void Down()
26+
{
27+
DropIndex("dbo.GeoFenceUpdates", new[] { "AssetDataId" });
28+
DropIndex("dbo.GeoFenceUpdates", new[] { "GeoFenceDataId" });
29+
DropIndex("dbo.GeoFenceUpdates", "GeoFenceAssetUnique");
30+
CreateIndex("dbo.GeoFenceUpdates", "AssetDataId");
31+
CreateIndex("dbo.GeoFenceUpdates", "GeoFenceDataId");
32+
}
33+
}
34+
}
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<root>
3+
<!--
4+
Microsoft ResX Schema
5+
6+
Version 2.0
7+
8+
The primary goals of this format is to allow a simple XML format
9+
that is mostly human readable. The generation and parsing of the
10+
various data types are done through the TypeConverter classes
11+
associated with the data types.
12+
13+
Example:
14+
15+
... ado.net/XML headers & schema ...
16+
<resheader name="resmimetype">text/microsoft-resx</resheader>
17+
<resheader name="version">2.0</resheader>
18+
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19+
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20+
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21+
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22+
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23+
<value>[base64 mime encoded serialized .NET Framework object]</value>
24+
</data>
25+
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26+
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27+
<comment>This is a comment</comment>
28+
</data>
29+
30+
There are any number of "resheader" rows that contain simple
31+
name/value pairs.
32+
33+
Each data row contains a name, and value. The row also contains a
34+
type or mimetype. Type corresponds to a .NET class that support
35+
text/value conversion through the TypeConverter architecture.
36+
Classes that don't support this are serialized and stored with the
37+
mimetype set.
38+
39+
The mimetype is used for serialized objects, and tells the
40+
ResXResourceReader how to depersist the object. This is currently not
41+
extensible. For a given mimetype the value must be set accordingly:
42+
43+
Note - application/x-microsoft.net.object.binary.base64 is the format
44+
that the ResXResourceWriter will generate, however the reader can
45+
read any of the formats listed below.
46+
47+
mimetype: application/x-microsoft.net.object.binary.base64
48+
value : The object must be serialized with
49+
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50+
: and then encoded with base64 encoding.
51+
52+
mimetype: application/x-microsoft.net.object.soap.base64
53+
value : The object must be serialized with
54+
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55+
: and then encoded with base64 encoding.
56+
57+
mimetype: application/x-microsoft.net.object.bytearray.base64
58+
value : The object must be serialized into a byte array
59+
: using a System.ComponentModel.TypeConverter
60+
: and then encoded with base64 encoding.
61+
-->
62+
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63+
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64+
<xsd:element name="root" msdata:IsDataSet="true">
65+
<xsd:complexType>
66+
<xsd:choice maxOccurs="unbounded">
67+
<xsd:element name="metadata">
68+
<xsd:complexType>
69+
<xsd:sequence>
70+
<xsd:element name="value" type="xsd:string" minOccurs="0" />
71+
</xsd:sequence>
72+
<xsd:attribute name="name" use="required" type="xsd:string" />
73+
<xsd:attribute name="type" type="xsd:string" />
74+
<xsd:attribute name="mimetype" type="xsd:string" />
75+
<xsd:attribute ref="xml:space" />
76+
</xsd:complexType>
77+
</xsd:element>
78+
<xsd:element name="assembly">
79+
<xsd:complexType>
80+
<xsd:attribute name="alias" type="xsd:string" />
81+
<xsd:attribute name="name" type="xsd:string" />
82+
</xsd:complexType>
83+
</xsd:element>
84+
<xsd:element name="data">
85+
<xsd:complexType>
86+
<xsd:sequence>
87+
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88+
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89+
</xsd:sequence>
90+
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91+
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92+
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93+
<xsd:attribute ref="xml:space" />
94+
</xsd:complexType>
95+
</xsd:element>
96+
<xsd:element name="resheader">
97+
<xsd:complexType>
98+
<xsd:sequence>
99+
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100+
</xsd:sequence>
101+
<xsd:attribute name="name" type="xsd:string" use="required" />
102+
</xsd:complexType>
103+
</xsd:element>
104+
</xsd:choice>
105+
</xsd:complexType>
106+
</xsd:element>
107+
</xsd:schema>
108+
<resheader name="resmimetype">
109+
<value>text/microsoft-resx</value>
110+
</resheader>
111+
<resheader name="version">
112+
<value>2.0</value>
113+
</resheader>
114+
<resheader name="reader">
115+
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116+
</resheader>
117+
<resheader name="writer">
118+
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119+
</resheader>
120+
<data name="Target" xml:space="preserve">
121+
<value>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</value>
122+
</data>
123+
<data name="DefaultSchema" xml:space="preserve">
124+
<value>dbo</value>
125+
</data>
126+
</root>

Backend/src/Trackable.EntityFramework/Trackable.EntityFramework.csproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,10 @@
167167
<Compile Include="Migrations\201711131016182_CreateTokenTable.Designer.cs">
168168
<DependentUpon>201711131016182_CreateTokenTable.cs</DependentUpon>
169169
</Compile>
170+
<Compile Include="Migrations\201802071124064_GeofenceUpdates-UniqueGeofenceId.cs" />
171+
<Compile Include="Migrations\201802071124064_GeofenceUpdates-UniqueGeofenceId.Designer.cs">
172+
<DependentUpon>201802071124064_GeofenceUpdates-UniqueGeofenceId.cs</DependentUpon>
173+
</Compile>
170174
<Compile Include="Migrations\Configuration.cs" />
171175
<Compile Include="Properties\AssemblyInfo.cs" />
172176
<Compile Include="SqlTypeHelper.cs" />
@@ -249,6 +253,9 @@
249253
<EmbeddedResource Include="Migrations\201711131016182_CreateTokenTable.resx">
250254
<DependentUpon>201711131016182_CreateTokenTable.cs</DependentUpon>
251255
</EmbeddedResource>
256+
<EmbeddedResource Include="Migrations\201802071124064_GeofenceUpdates-UniqueGeofenceId.resx">
257+
<DependentUpon>201802071124064_GeofenceUpdates-UniqueGeofenceId.cs</DependentUpon>
258+
</EmbeddedResource>
252259
</ItemGroup>
253260
<ItemGroup>
254261
<ProjectReference Include="..\Trackable.Common\Trackable.Common.csproj">

Backend/src/Trackable.EntityFramework/TrackableDbContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public TrackableDbContext(string connString) : base(connString)
4141
public DbSet<AssetPropertiesData> AssetProperties { get; set; }
4242

4343
public DbSet<DeploymentIdData> DeploymentId { get; set; }
44-
44+
4545
public DbSet<TokenData> Tokens { get; set; }
4646

4747
public override int SaveChanges()

Backend/src/Trackable.Models/GeoFenceUpdate.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
using System;
2+
using Trackable.Models.Helpers;
23

34
namespace Trackable.Models
45
{
56
public class GeoFenceUpdate : ModelBase<int>
67
{
8+
[Mutable]
79
public NotificationStatus NotificationStatus { get; set; } = NotificationStatus.Unknown;
810

911
public DateTime UpdatedAt { get; set; }

0 commit comments

Comments
 (0)