Skip to content

Commit d6f8bba

Browse files
committed
* converting string fields that may contain 0x00 to utf8 bytes: #48 8.1.2. @ CrawlerDbContext..OnModelCreating()
@ crawler * converting string fields that may contain `0x00` to utf8 bytes: #48 `8.1.2.` @ `ImagePipelineDbContext.OnModelCreating()` * now will convert point with invalid coordinate to null: #48 `10.3.1.` @ `MetadataConsumer.ExifGpsTagValuesParser.ParseGpsCoordinateOrNull()` @ imagePipeline @ c#
1 parent cc7c9bc commit d6f8bba

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

c#/crawler/src/Db/CrawlerDbContext.cs

+2
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ protected override void OnModelCreating(ModelBuilder b)
9797
user.SplittingHasKey<SplitIpGeolocation>("ipGeolocation", e => new {e.Uid, e.TakenAt});
9898
user.SplittingHasKey<SplitPortraitUpdatedAt>("portraitUpdatedAt", e => new {e.Uid, e.TakenAt});
9999
user.SplittingHasKey<SplitDisplayName>("displayName", e => new {e.Uid, e.TakenAt});
100+
b.Entity<SplitDisplayName>().Property(e => e.DisplayName).HasConversion<byte[]>();
101+
b.Entity<User>().Property(e => e.DisplayName).HasConversion<byte[]>();
100102

101103
b.Entity<AuthorExpGradeRevision>().ToTable("tbmcr_authorExpGrade")
102104
.HasKey(e => new {e.Fid, e.Uid, e.DiscoveredAt});

c#/imagePipeline/src/Consumer/MetadataConsumer.cs

+4-2
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,10 @@ private static class ExifGpsTagValuesParser
236236
$"Unexpected \"{longitudeRef}\", expecting \"E\" or \"W\".")
237237
};
238238

239-
return NetTopologySuite.NtsGeometryServices.Instance.CreateGeometryFactory()
240-
.CreatePoint(new Coordinate(ConvertDmsToDd(longitudeDms), ConvertDmsToDd(latitudeDms)));
239+
var coordinate = new Coordinate(ConvertDmsToDd(longitudeDms), ConvertDmsToDd(latitudeDms));
240+
return coordinate.IsValid
241+
? NetTopologySuite.NtsGeometryServices.Instance.CreateGeometryFactory().CreatePoint(coordinate)
242+
: null;
241243
}
242244

243245
private static double ConvertDmsToDd(IReadOnlyList<double> dms)

c#/imagePipeline/src/Db/ImagePipelineDbContext.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ protected override void OnModelCreating(ModelBuilder b)
3434
new {e.ImageId, e.FrameIndex, e.CenterPointX, e.CenterPointY, e.Width, e.Height, e.RotationDegrees, e.Recognizer});
3535
b.Entity<ImageQrCode>().ToTable("tbmi_qrCode").HasKey(e =>
3636
new {e.ImageId, e.FrameIndex, e.Point1X, e.Point1Y, e.Point2X, e.Point2Y, e.Point3X, e.Point3Y, e.Point4X, e.Point4Y});
37+
b.Entity<ImageQrCode>().Property(e => e.Text).HasConversion<byte[]>();
3738
b.Entity<ImageMetadata>().ToTable("tbmi_metadata");
3839
b.Entity<ImageFailed>().ToTable("tbmi_failed");
3940
b.Entity<ForumScript>().ToTable("tbmi_forum_script").HasKey(e => new {e.Fid, e.Script});
@@ -45,13 +46,16 @@ void SplitImageMetadata<TRelatedEntity>
4546
b.Entity<ImageMetadata>().HasOne(keySelector).WithOne().HasForeignKey<TRelatedEntity>(e => e.ImageId);
4647
b.Entity<TRelatedEntity>().ToTable($"tbmi_metadata_{tableNameSuffix}");
4748
}
48-
SplitImageMetadata(e => e.DownloadedByteSize, "downloadedByteSize");
4949
SplitImageMetadata(e => e.EmbeddedExif, "embedded_exif");
5050
b.Entity<Exif>().HasMany(e => e.TagNames).WithOne().HasForeignKey(e => e.ImageId);
51+
b.Entity<Exif>().Property(e => e.UserComment).HasConversion<byte[]>();
52+
b.Entity<Exif>().Property(e => e.XpAuthor).HasConversion<byte[]>();
5153
b.Entity<Exif.TagName>().ToTable("tbmi_metadata_embedded_exif_tagName").HasKey(e => new {e.ImageId, e.Name});
54+
5255
SplitImageMetadata(e => e.EmbeddedIcc, "embedded_icc");
5356
SplitImageMetadata(e => e.EmbeddedIptc, "embedded_iptc");
5457
SplitImageMetadata(e => e.EmbeddedXmp, "embedded_xmp");
58+
SplitImageMetadata(e => e.DownloadedByteSize, "downloadedByteSize");
5559
SplitImageMetadata(e => e.JpgMetadata, "jpg");
5660
SplitImageMetadata(e => e.PngMetadata, "png");
5761
SplitImageMetadata(e => e.GifMetadata, "gif");

0 commit comments

Comments
 (0)