Skip to content

Commit 44cc15f

Browse files
committed
Convert OrmLite APIs to use sync (for SQLite)
1 parent 383d295 commit 44cc15f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+353
-360
lines changed

MyApp.ServiceInterface/AdminServices.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,11 @@ public async Task<object> Any(AdminResetCommonPassword request)
9494
throw HttpError.NotFound("Post not found");
9595

9696
var refId = $"{request.Id}";
97-
await Db.SaveAsync(post);
98-
var statTotal = await Db.SingleAsync(Db.From<StatTotals>().Where(x => x.Id == refId));
97+
Db.Save(post);
98+
var statTotal = Db.Single(Db.From<StatTotals>().Where(x => x.Id == refId));
9999
if (statTotal != null)
100100
{
101-
await Db.InsertAsync(new StatTotals
101+
Db.Insert(new StatTotals
102102
{
103103
Id = refId,
104104
PostId = post.Id,
@@ -121,7 +121,7 @@ public async Task<object> Any(RankAnswer request)
121121
throw HttpError.NotFound("Answer not found");
122122

123123
var answerCreator = !string.IsNullOrEmpty(answer.CreatedBy)
124-
? await Db.ScalarAsync<string>(Db.From<ApplicationUser>().Where(x => x.UserName == answer.CreatedBy).Select(x => x.Id))
124+
? Db.Scalar<string>(Db.From<ApplicationUser>().Where(x => x.UserName == answer.CreatedBy).Select(x => x.Id))
125125
: null;
126126

127127
if (answerCreator == null)

MyApp.ServiceInterface/AiServerServices.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public async Task Any(CreateAnswerCallback request)
106106
LastUpdated = DateTime.UtcNow,
107107
});
108108

109-
await Db.NotifyQuestionAuthorIfRequiredAsync(jobs, answer);
109+
Db.NotifyQuestionAuthorIfRequired(jobs, answer);
110110

111111
jobs.RunCommand<CreateRankAnswerTaskCommand>(new CreateRankAnswerTask {
112112
AnswerId = answer.RefId!,
@@ -120,7 +120,7 @@ public async Task Any(CreateAnswerCallback request)
120120

121121
public async Task Any(RankAnswerCallback request)
122122
{
123-
var answerCreator = await AssertUserNameById(request.UserId);
123+
var answerCreator = AssertUserNameById(request.UserId);
124124

125125
var graderUser = appConfig.GetModelUser(request.Grader);
126126
if (graderUser?.UserName == null)
@@ -182,7 +182,7 @@ public async Task Any(RankAnswerCallback request)
182182

183183
public async Task Any(AnswerCommentCallback request)
184184
{
185-
var commentCreator = await AssertUserNameById(request.UserId);
185+
var commentCreator = AssertUserNameById(request.UserId);
186186
var postId = request.AnswerId.LeftPart('-').ToInt();
187187
var modelUserName = request.AnswerId.RightPart('-');
188188

@@ -226,10 +226,10 @@ public async Task Any(AnswerCommentCallback request)
226226
await questions.SaveMetaAsync(postId, meta);
227227
}
228228

229-
private async Task<string> AssertUserNameById(string userId)
229+
private string AssertUserNameById(string userId)
230230
{
231231
var userName = appConfig.GetModelUserById(userId)?.UserName
232-
?? await Db.ScalarAsync<string?>(Db.From<ApplicationUser>().Where(x => x.Id == userId).Select(x => x.UserName));
232+
?? Db.Scalar<string?>(Db.From<ApplicationUser>().Where(x => x.Id == userId).Select(x => x.UserName));
233233
if (userName == null)
234234
throw HttpError.BadRequest("Invalid User Id: " + userId);
235235
return userName;
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
11
using MyApp.Data;
22
using MyApp.ServiceModel;
33
using ServiceStack;
4-
using ServiceStack.IO;
4+
using ServiceStack.Data;
55
using ServiceStack.OrmLite;
66

77
namespace MyApp.ServiceInterface;
88

99
[Worker(Databases.Analytics)]
10-
public class AnalyticsTasksCommand(R2VirtualFiles r2, QuestionsProvider questions) : AsyncCommand<AnalyticsTasks>
10+
public class AnalyticsTasksCommand(IDbConnectionFactory dbFactory) : SyncCommand<AnalyticsTasks>
1111
{
12-
protected override async Task RunAsync(AnalyticsTasks request, CancellationToken token)
12+
protected override void Run(AnalyticsTasks request)
1313
{
1414
if (request.CreatePostStat == null && request.CreateSearchStat == null && request.DeletePost == null)
1515
return;
1616

17-
using var analyticsDb = HostContext.AppHost.GetDbConnection(Databases.Analytics);
17+
using var analyticsDb = dbFactory.Open(Databases.Analytics);
1818

1919
if (request.CreatePostStat != null)// && !Stats.IsAdminOrModerator(request.RecordPostView.UserName))
2020
{
21-
await analyticsDb.InsertAsync(request.CreatePostStat, token: token);
21+
analyticsDb.Insert(request.CreatePostStat);
2222
}
2323

2424
if (request.CreateSearchStat != null)// && !Stats.IsAdminOrModerator(request.RecordSearchView.UserName))
2525
{
26-
await analyticsDb.InsertAsync(request.CreateSearchStat, token: token);
26+
analyticsDb.Insert(request.CreateSearchStat);
2727
}
2828

2929
if (request.DeletePost != null)
3030
{
31-
await analyticsDb.DeleteAsync<PostStat>(x => x.PostId == request.DeletePost, token: token);
31+
analyticsDb.Delete<PostStat>(x => x.PostId == request.DeletePost);
3232
}
3333
}
3434
}

MyApp.ServiceInterface/ApiServices.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ namespace MyApp.ServiceInterface;
88

99
public class ApiServices(IDbConnectionFactory dbFactory) : Service
1010
{
11-
public async Task<object> Any(SearchPosts request)
11+
public object Any(SearchPosts request)
1212
{
13-
using var dbSearch = await dbFactory.OpenAsync(Databases.Search);
13+
using var dbSearch = dbFactory.Open(Databases.Search);
1414

1515
var skip = request.Skip;
1616
var take = Math.Min(request.Take ?? 25, 200);
@@ -31,14 +31,14 @@ public async Task<object> Any(SearchPosts request)
3131

3232
q.OrderByView(request.View);
3333

34-
List<PostFts> postsFts = await dbSearch.SelectAsync(q
34+
List<PostFts> postsFts = dbSearch.Select(q
3535
.Select("RefId, substring(Body,0,400) as Body, ModifiedDate")
3636
.Skip(request.Skip)
3737
.Take(take));
3838
var total = dbSearch.Count(q);
3939

40-
using var db = await dbFactory.OpenAsync();
41-
var posts = await db.PopulatePostsAsync(postsFts);
40+
using var db = dbFactory.Open();
41+
var posts = db.PopulatePosts(postsFts);
4242

4343
return new SearchPostsResponse
4444
{
@@ -48,10 +48,10 @@ public async Task<object> Any(SearchPosts request)
4848
}
4949
else
5050
{
51-
using var db = await dbFactory.OpenAsync();
51+
using var db = dbFactory.Open();
5252
var q = db.From<Post>();
5353

54-
var posts = await db.SelectAsync(q
54+
var posts = db.Select(q
5555
.OrderByView(request.View)
5656
.Skip(skip)
5757
.Take(take));

MyApp.ServiceInterface/App/CreateAnswerCommand.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ namespace MyApp.ServiceInterface.App;
88

99
[Tag(Tags.Answers)]
1010
[Worker(Databases.App)]
11-
public class CreateAnswerCommand(AppConfig appConfig, IDbConnection db) : IAsyncCommand<Post>
11+
public class CreateAnswerCommand(AppConfig appConfig, IDbConnection db) : SyncCommand<Post>
1212
{
13-
public async Task ExecuteAsync(Post answer)
13+
protected override void Run(Post answer)
1414
{
1515
if (answer.ParentId == null)
1616
throw new ArgumentNullException(nameof(answer.ParentId));
@@ -19,9 +19,9 @@ public async Task ExecuteAsync(Post answer)
1919

2020
var postId = answer.ParentId!.Value;
2121
var refId = $"{postId}-{answer.CreatedBy}";
22-
if (!await db.ExistsAsync(db.From<StatTotals>().Where(x => x.Id == refId)))
22+
if (!db.Exists(db.From<StatTotals>().Where(x => x.Id == refId)))
2323
{
24-
await db.InsertAsync(new StatTotals
24+
db.Insert(new StatTotals
2525
{
2626
Id = refId,
2727
PostId = postId,
@@ -34,13 +34,13 @@ await db.InsertAsync(new StatTotals
3434
});
3535
}
3636

37-
var post = await db.SingleByIdAsync<Post>(postId);
37+
var post = db.SingleById<Post>(postId);
3838
if (post?.CreatedBy != null)
3939
{
4040
// Notify Post Author of new Answer
4141
if (post.CreatedBy != answer.CreatedBy && appConfig.IsHuman(post.CreatedBy))
4242
{
43-
await db.InsertAsync(new Notification
43+
db.Insert(new Notification
4444
{
4545
UserName = post.CreatedBy,
4646
Type = NotificationType.NewAnswer,
@@ -61,7 +61,7 @@ await db.InsertAsync(new Notification
6161
.Where(x => x != post.CreatedBy && x != answer.CreatedBy && appConfig.IsHuman(x)).ToList();
6262
if (userNameMentions.Count > 0)
6363
{
64-
var existingUsers = await db.SelectAsync(db.From<ApplicationUser>()
64+
var existingUsers = db.Select(db.From<ApplicationUser>()
6565
.Where(x => userNameMentions.Contains(x.UserName!)));
6666

6767
foreach (var existingUser in existingUsers)
@@ -72,7 +72,7 @@ await db.InsertAsync(new Notification
7272
var startPos = Math.Max(0, firstMentionPos - 50);
7373
if (appConfig.IsHuman(existingUser.UserName))
7474
{
75-
await db.InsertAsync(new Notification
75+
db.Insert(new Notification
7676
{
7777
UserName = existingUser.UserName!,
7878
Type = NotificationType.AnswerMention,
@@ -91,7 +91,7 @@ await db.InsertAsync(new Notification
9191

9292
if (appConfig.IsHuman(answer.CreatedBy))
9393
{
94-
await db.InsertAsync(new Achievement
94+
db.Insert(new Achievement
9595
{
9696
UserName = answer.CreatedBy,
9797
Type = AchievementType.NewAnswer,

MyApp.ServiceInterface/App/CreateCommentVoteCommand.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
namespace MyApp.ServiceInterface.App;
88

99
[Tag(Tags.Database)]
10+
[Worker(Databases.App)]
1011
public class CreateCommentVoteCommand(IDbConnection db, QuestionsProvider questions) : IAsyncCommand<Vote>
1112
{
1213
public async Task ExecuteAsync(Vote vote)
@@ -16,7 +17,7 @@ public async Task ExecuteAsync(Vote vote)
1617
if (string.IsNullOrEmpty(vote.UserName))
1718
throw new ArgumentNullException(nameof(vote.UserName));
1819

19-
var rowsDeleted = await db.DeleteAsync<Vote>(new { vote.RefId, vote.UserName });
20+
var rowsDeleted = db.Delete<Vote>(new { vote.RefId, vote.UserName });
2021

2122
var meta = await questions.GetMetaAsync(vote.PostId);
2223
var created = vote.RefId.LastRightPart('-').ToLong();
@@ -30,9 +31,9 @@ public async Task ExecuteAsync(Vote vote)
3031
throw new ArgumentException("Can't vote on your own comment", nameof(vote.RefId));
3132

3233
vote.RefUserName = comment.CreatedBy;
33-
await db.InsertAsync(vote);
34+
db.Insert(vote);
3435

35-
comment.UpVotes = (int) await db.CountAsync<Vote>(x => x.RefId == vote.RefId && x.Score > 0);
36+
comment.UpVotes = (int) db.Count<Vote>(x => x.RefId == vote.RefId && x.Score > 0);
3637
await questions.SaveMetaAsync(vote.PostId, meta);
3738
}
3839
}

MyApp.ServiceInterface/App/CreateFlagCommand.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@ namespace MyApp.ServiceInterface.App;
77

88
[Tag(Tags.Database)]
99
[Worker(Databases.App)]
10-
public class CreateFlagCommand(IDbConnection db) : AsyncCommand<Flag>
10+
public class CreateFlagCommand(IDbConnection db) : SyncCommand<Flag>
1111
{
12-
protected override async Task RunAsync(Flag request, CancellationToken token)
13-
{
14-
await db.InsertAsync(request, token: token);
15-
}
12+
protected override void Run(Flag request) => db.Insert(request);
1613
}

MyApp.ServiceInterface/App/CreateNotificationCommand.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ namespace MyApp.ServiceInterface.App;
88

99
[Tag(Tags.Notifications)]
1010
[Worker(Databases.App)]
11-
public class CreateNotificationCommand(AppConfig appConfig, IDbConnection db) : AsyncCommand<Notification>
11+
public class CreateNotificationCommand(AppConfig appConfig, IDbConnection db) : SyncCommand<Notification>
1212
{
13-
protected override async Task RunAsync(Notification request, CancellationToken token)
13+
protected override void Run(Notification request)
1414
{
15-
await db.InsertAsync(request, token: token);
15+
db.Insert(request);
1616
appConfig.IncrUnreadNotificationsFor(request.UserName);
1717
}
1818
}

MyApp.ServiceInterface/App/CreatePostCommand.cs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,40 +20,40 @@ protected override async Task RunAsync(Post post, CancellationToken token)
2020

2121
if (post.Id > 0)
2222
{
23-
await db.InsertAsync(post, token: token);
23+
db.Insert(post);
2424
}
2525
else
2626
{
27-
post.Id = (int)await db.InsertAsync(post, selectIdentity: true, token: token);
27+
post.Id = (int)db.Insert(post, selectIdentity: true);
2828
}
2929

3030
var createdBy = post.CreatedBy;
3131
if (createdBy != null && post.PostTypeId == 1)
3232
{
33-
await appConfig.ResetUserQuestionsAsync(db, createdBy);
33+
appConfig.ResetUserQuestions(db, createdBy);
3434
}
3535

3636
try
3737
{
38-
await db.InsertAsync(new StatTotals
38+
db.Insert(new StatTotals
3939
{
4040
Id = $"{post.Id}",
4141
PostId = post.Id,
4242
UpVotes = 0,
4343
DownVotes = 0,
4444
StartingUpVotes = 0,
4545
CreatedBy = post.CreatedBy,
46-
}, token: token);
46+
});
4747
}
4848
catch (Exception e)
4949
{
5050
log.LogWarning("Couldn't insert StatTotals for Post {PostId}: '{Message}', updating instead...", post.Id,
5151
e.Message);
52-
await db.UpdateOnlyAsync(() => new StatTotals
52+
db.UpdateOnly(() => new StatTotals
5353
{
5454
PostId = post.Id,
5555
CreatedBy = post.CreatedBy,
56-
}, x => x.Id == $"{post.Id}", token: token);
56+
}, x => x.Id == $"{post.Id}");
5757
}
5858

5959
if (!string.IsNullOrEmpty(body))
@@ -63,8 +63,8 @@ await db.InsertAsync(new StatTotals
6363
.Where(x => x != createdBy && appConfig.IsHuman(x)).ToList();
6464
if (userNameMentions.Count > 0)
6565
{
66-
var existingUsers = await db.SelectAsync(db.From<ApplicationUser>()
67-
.Where(x => userNameMentions.Contains(x.UserName!)), token: token);
66+
var existingUsers = db.Select(db.From<ApplicationUser>()
67+
.Where(x => userNameMentions.Contains(x.UserName!)));
6868

6969
foreach (var existingUser in existingUsers)
7070
{
@@ -74,7 +74,7 @@ await db.InsertAsync(new StatTotals
7474
var startPos = Math.Max(0, firstMentionPos - 50);
7575
if (appConfig.IsHuman(existingUser.UserName))
7676
{
77-
await db.InsertAsync(new Notification
77+
db.Insert(new Notification
7878
{
7979
UserName = existingUser.UserName!,
8080
Type = NotificationType.QuestionMention,
@@ -83,7 +83,7 @@ await db.InsertAsync(new Notification
8383
CreatedDate = post.CreationDate,
8484
Summary = cleanBody.GenerateNotificationSummary(startPos),
8585
RefUserName = createdBy,
86-
}, token: token);
86+
});
8787
appConfig.IncrUnreadNotificationsFor(existingUser.UserName!);
8888
}
8989
}
@@ -92,26 +92,26 @@ await db.InsertAsync(new Notification
9292

9393
if (appConfig.IsHuman(post.CreatedBy))
9494
{
95-
await db.InsertAsync(new Achievement
95+
db.Insert(new Achievement
9696
{
9797
UserName = post.CreatedBy!,
9898
Type = AchievementType.NewQuestion,
9999
RefId = $"{post.Id}",
100100
PostId = post.Id,
101101
Score = 1,
102102
CreatedDate = DateTime.UtcNow,
103-
}, token: token);
103+
});
104104
appConfig.IncrUnreadAchievementsFor(post.CreatedBy!);
105105

106106
// Setup auto-watch for new questions (Sending Emails for new Answers)
107-
await db.InsertAsync(new WatchPost
107+
db.Insert(new WatchPost
108108
{
109109
UserName = post.CreatedBy!,
110110
PostId = post.Id,
111111
CreatedDate = post.CreationDate,
112112
// Email new answers 1hr after asking question
113113
AfterDate = DateTime.UtcNow.Add(TimeSpan.FromHours(1)),
114-
}, token: token);
114+
});
115115
}
116116
}
117117
}

0 commit comments

Comments
 (0)