added host to synctweet
This commit is contained in:
parent
bb4ef071c2
commit
bc55778089
|
@ -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)
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue