added host to synctweet

This commit is contained in:
Nicolas Constant 2023-01-06 02:05:26 -05:00
parent bb4ef071c2
commit bc55778089
No known key found for this signature in database
GPG Key ID: 1E9F677FB01A5688
3 changed files with 29 additions and 6 deletions

View File

@ -195,6 +195,7 @@ namespace BirdsiteLive.DAL.Postgres.DataAccessLayers
acct VARCHAR(50) NOT NULL, acct VARCHAR(50) NOT NULL,
tweetId BIGINT NOT NULL, tweetId BIGINT NOT NULL,
inbox VARCHAR(2048) NOT NULL, inbox VARCHAR(2048) NOT NULL,
host VARCHAR(253) NOT NULL,
publishedAt TIMESTAMP (2) WITHOUT TIME ZONE NOT NULL, publishedAt TIMESTAMP (2) WITHOUT TIME ZONE NOT NULL,
UNIQUE (acct, tweetId, inbox) UNIQUE (acct, tweetId, inbox)

View File

@ -22,21 +22,26 @@ namespace BirdsiteLive.DAL.Postgres.DataAccessLayers
{ {
if (tweet.PublishedAt == default) throw new ArgumentException("publishedAt"); if (tweet.PublishedAt == default) throw new ArgumentException("publishedAt");
if (tweet.TweetId == default) throw new ArgumentException("tweetId"); if (tweet.TweetId == default) throw new ArgumentException("tweetId");
if (string.IsNullOrWhiteSpace(tweet.Acct)) throw new ArgumentException("acct");
if (string.IsNullOrWhiteSpace(tweet.Inbox)) throw new ArgumentException("inbox");
if (string.IsNullOrWhiteSpace(tweet.Host)) throw new ArgumentException("host");
var acct = tweet.Acct.ToLowerInvariant().Trim(); var acct = tweet.Acct.ToLowerInvariant().Trim();
var inbox = tweet.Inbox.ToLowerInvariant().Trim(); var inbox = tweet.Inbox.ToLowerInvariant().Trim();
var host = tweet.Host.ToLowerInvariant().Trim();
using (var dbConnection = Connection) using (var dbConnection = Connection)
{ {
dbConnection.Open(); dbConnection.Open();
return (await dbConnection.QueryAsync<long>( return (await dbConnection.QueryAsync<long>(
$"INSERT INTO {_settings.SynchronizedTweetsTableName} (acct,tweetId,inbox,publishedAt) VALUES(@acct,@tweetId,@inbox,@publishedAt) RETURNING id", $"INSERT INTO {_settings.SynchronizedTweetsTableName} (acct,tweetId,inbox,host,publishedAt) VALUES(@acct,@tweetId,@inbox,@host,@publishedAt) RETURNING id",
new new
{ {
acct, acct,
tweetId = tweet.TweetId, tweetId = tweet.TweetId,
inbox, inbox,
host,
publishedAt = tweet.PublishedAt.ToUniversalTime() publishedAt = tweet.PublishedAt.ToUniversalTime()
})).First(); })).First();
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using BirdsiteLive.DAL.Postgres.DataAccessLayers; using BirdsiteLive.DAL.Postgres.DataAccessLayers;
using BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers.Base; using BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers.Base;
@ -33,7 +34,8 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers
{ {
Acct = "test", Acct = "test",
PublishedAt = DateTime.UtcNow, PublishedAt = DateTime.UtcNow,
Inbox = "https://instance.ext/inbox", Inbox = "/inbox",
Host = "instance.ext",
TweetId = 4567889 TweetId = 4567889
}; };
@ -47,6 +49,7 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers
Assert.IsTrue(result.Id > 0); Assert.IsTrue(result.Id > 0);
Assert.AreEqual(tweet.Acct, result.Acct); Assert.AreEqual(tweet.Acct, result.Acct);
Assert.AreEqual(tweet.Inbox, result.Inbox); Assert.AreEqual(tweet.Inbox, result.Inbox);
Assert.AreEqual(tweet.Host, result.Host);
Assert.AreEqual(tweet.TweetId, result.TweetId); Assert.AreEqual(tweet.TweetId, result.TweetId);
Assert.IsTrue(Math.Abs((tweet.PublishedAt - result.PublishedAt).Seconds) < 5); Assert.IsTrue(Math.Abs((tweet.PublishedAt - result.PublishedAt).Seconds) < 5);
} }
@ -58,7 +61,8 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers
{ {
Acct = "test", Acct = "test",
PublishedAt = DateTime.UtcNow, PublishedAt = DateTime.UtcNow,
Inbox = "https://instance.ext/inbox", Inbox = "/inbox",
Host = "instance.ext",
TweetId = 4567889 TweetId = 4567889
}; };
@ -77,15 +81,19 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers
var now = DateTime.UtcNow; var now = DateTime.UtcNow;
var dal = new SyncTweetsPostgresDal(_settings); var dal = new SyncTweetsPostgresDal(_settings);
var allData = new List<SyncTweet>();
for (var i = 0; i < 100; i++) for (var i = 0; i < 100; i++)
{ {
var tweet = new SyncTweet var tweet = new SyncTweet
{ {
Acct = "test", Acct = "test",
PublishedAt = now.AddDays(-10 - i), PublishedAt = now.AddDays(-10 - i),
Inbox = "https://instance.ext/inbox", Inbox = "/inbox",
Host = "instance.ext",
TweetId = 4567889 + i TweetId = 4567889 + i
}; };
allData.Add(tweet);
await dal.SaveTweetAsync(tweet); await dal.SaveTweetAsync(tweet);
} }
@ -100,6 +108,13 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers
Assert.IsTrue(res.PublishedAt < date); Assert.IsTrue(res.PublishedAt < date);
Assert.IsTrue(res.Id > 10); Assert.IsTrue(res.Id > 10);
Assert.IsTrue(res.Id < 25); Assert.IsTrue(res.Id < 25);
var original = allData.First(x => x.Acct == res.Acct && x.TweetId == res.TweetId);
Assert.AreEqual(original.Acct, res.Acct);
Assert.AreEqual(original.Inbox, res.Inbox);
Assert.AreEqual(original.Host, res.Host);
Assert.AreEqual(original.TweetId, res.TweetId);
Assert.IsTrue(Math.Abs((original.PublishedAt - res.PublishedAt).Seconds) < 5);
} }
} }
@ -115,7 +130,8 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers
{ {
Acct = "test", Acct = "test",
PublishedAt = now.AddDays(-10 - i), PublishedAt = now.AddDays(-10 - i),
Inbox = "https://instance.ext/inbox", Inbox = "/inbox",
Host = "instance.ext",
TweetId = 4567889 + i TweetId = 4567889 + i
}; };
await dal.SaveTweetAsync(tweet); await dal.SaveTweetAsync(tweet);
@ -140,7 +156,8 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers
{ {
Acct = "test", Acct = "test",
PublishedAt = now.AddDays(-10 - i), PublishedAt = now.AddDays(-10 - i),
Inbox = "https://instance.ext/inbox", Inbox = "/inbox",
Host = "instance.ext",
TweetId = 4567889 + i TweetId = 4567889 + i
}; };
await dal.SaveTweetAsync(tweet); await dal.SaveTweetAsync(tweet);