Skip to content

Commit 10d8ac1

Browse files
async write operations to db
1 parent 1400cbb commit 10d8ac1

15 files changed

+389
-121
lines changed

.vscode/settings.json

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"sqltools.connections": [
3+
{
4+
"previewLimit": 50,
5+
"driver": "SQLite",
6+
"name": "babble",
7+
"database": "${workspaceFolder:babble}/Server/babble.db"
8+
}
9+
]
10+
}

Server/Data/BabbleContext.cs

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class BabbleContext : DbContext
2121
public BabbleContext()
2222
{
2323
DbPath = Path.Join(GetRelativePath(), "babble.db");
24+
Console.WriteLine(DbPath);
2425
}
2526

2627
protected override void OnConfiguring(DbContextOptionsBuilder options)

Server/Data/Models/Contact.cs

+10-2
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,19 @@ namespace Server.Models
99
public class Contact
1010
{
1111
public int Id { get; set; }
12+
13+
// null if contact isn't accepted
14+
// name of contact showed at user from
15+
public string? NameAtUserFrom { get; set; }
16+
17+
// name of contact showed at user to
18+
public string? NameAtUserTo { get; set; }
19+
20+
public bool isAccepted { get; set; }
21+
1222
public int UserFromId { get; set; }
1323
public User UserFrom { get; set; }
1424
public int UserToId { get; set; }
1525
public User UserTo { get; set; }
16-
17-
public bool isAccepted { get; set; }
1826
}
1927
}

Server/DbService/ContactService.cs

+12-9
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ namespace Server.DbService
1111

1212
public interface IContactService
1313
{
14-
public void SendInvite(string unameFrom, string unameTo);
15-
public void AcceptInvite(string unameFrom, string unameTo);
14+
public Task SendInviteAsync(string unameFrom, string unameTo);
15+
public Task AcceptInviteAsync(string unameFrom, string unameTo);
1616
public IEnumerable<Contact> GetInvites(string uname);
1717
public IEnumerable<Contact> GetContacts(string uname);
1818
}
@@ -22,6 +22,7 @@ public class ContactService : IContactService
2222
BabbleContext db;
2323
public ContactService(BabbleContext db) => this.db = db;
2424

25+
// todo: rewrite
2526
// get invites, sended to the person
2627
public IEnumerable<Contact> GetInvites(string uname)
2728
{
@@ -39,35 +40,37 @@ public IEnumerable<Contact> GetContacts(string uname)
3940
}
4041

4142
// accept invite
42-
public void AcceptInvite(string unameFrom, string unameTo)
43+
public async Task AcceptInviteAsync(string unameFrom, string unameTo)
4344
{
4445
User? userFrom = db.Users.FirstOrDefault(u => u.Name == unameFrom);
4546
User? userTo = db.Users.FirstOrDefault(u => u.Name == unameTo);
4647

4748
if (userFrom != null && userTo != null)
4849
{
49-
AcceptInvite(userFrom, userTo);
50+
await AcceptInviteAsync(userFrom, userTo);
5051
}
5152
}
52-
private void AcceptInvite(User userFrom, User userTo)
53+
private async Task AcceptInviteAsync(User userFrom, User userTo)
5354
{
5455
Contact? contact = db.Contacts.FirstOrDefault(c => c.UserFromId == userFrom.Id && c.UserToId == userTo.Id);
5556
if (contact != null)
5657
{
5758
contact.isAccepted = true;
58-
db.SaveChangesAsync();
59+
contact.NameAtUserFrom = userTo.Name;
60+
contact.NameAtUserTo = userFrom.Name;
61+
await db.SaveChangesAsync();
5962
}
6063
}
6164

6265
// send invite
63-
public void SendInvite(string unameFrom, string unameTo)
66+
public async Task SendInviteAsync(string unameFrom, string unameTo)
6467
{
6568
User? userFrom = db.Users.FirstOrDefault(u => u.Name == unameFrom);
6669
User? userTo = db.Users.FirstOrDefault(u => u.Name == unameTo);
6770
if (userTo != null && userFrom != null)
6871
{
69-
db.Contacts.AddAsync(new Contact { UserFrom = userFrom, UserTo = userTo, isAccepted = false });
70-
db.SaveChangesAsync();
72+
db.Contacts.Add(new Contact { UserFrom = userFrom, UserTo = userTo, isAccepted = false });
73+
await db.SaveChangesAsync();
7174
}
7275
}
7376
}

Server/DbService/DatabaseService.cs

+15-13
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,26 @@ public DatabaseService()
1919
}
2020

2121
// work with users
22-
public void AddUser(string name, string password) => userService.AddUser(name, password);
23-
public void RemoveUser(string name) => userService.RemoveUser(name);
24-
public void RemoveUser(int id) => userService.RemoveUser(id);
22+
public Task AddUserAsync(string name, string password) => userService.AddUserAsync(name, password);
23+
//public void RemoveUserAsync(string name) => userService.RemoveUserAsync(name);
24+
public Task RemoveUserAsync(int id) => userService.RemoveUserAsync(id);
2525

2626
// work with groups
27-
public bool AddUserToGroup(string uname, string groupName) => groupService.AddUserToGroup(uname, groupName);
28-
public bool AddUserToGroup(int uid, string groupName) => groupService.AddUserToGroup(uid, groupName);
29-
public void RenameGroup(string groupName, string newName) => groupService.RenameGroup(groupName, newName);
27+
//public bool AddUserToGroupAsync(string uname, string groupName) => groupService.AddUserToGroupAsync(uname, groupName);
28+
public Task<bool> AddUserToGroupAsync(int uid, string groupName) => groupService.AddUserToGroupAsync(uid, groupName);
29+
//public void RenameGroup(string groupName, string newName) => groupService.RenameGroup(groupName, newName);
30+
public Task RenameGroupAsync(int id, string newName) => groupService.RenameGroupAsync(id, newName);
31+
3032
public IEnumerable<Group> GetUserGroups(int uid) => groupService.GetUserGroups(uid);
31-
public IEnumerable<Group> GetUserGroups(string uname) => groupService.GetUserGroups(uname);
32-
public void RemoveUserFromGroup(int uid, string groupName) => groupService.RemoveUserFromGroup(uid, groupName);
33-
public void RemoveUserFromGroup(string uname, string groupName) => groupService.RemoveUserFromGroup(uname, groupName);
34-
public void AddGroup(int uid, string groupName) => groupService.AddGroup(uid, groupName);
35-
public void AddGroup(string uname, string groupName) => groupService.AddGroup(uname, groupName);
33+
//public IEnumerable<Group> GetUserGroups(string uname) => groupService.GetUserGroups(uname);
34+
public Task RemoveUserFromGroupAsync(int uid, string groupName) => groupService.RemoveUserFromGroupAsync(uid, groupName);
35+
//public void RemoveUserFromGroup(string uname, string groupName) => groupService.RemoveUserFromGroup(uname, groupName);
36+
public Task AddGroupAsync(int uid, string groupName) => groupService.AddGroupAsync(uid, groupName);
37+
//public void AddGroup(string uname, string groupName) => groupService.AddGroup(uname, groupName);
3638

3739
// work with contacts
38-
public void SendInvite(string unameFrom, string unameTo) => contactService.SendInvite(unameFrom, unameTo);
39-
public void AcceptInvite(string unameFrom, string unameTo) => contactService.AcceptInvite(unameFrom, unameTo);
40+
public Task SendInviteAsync(string unameFrom, string unameTo) => contactService.SendInviteAsync(unameFrom, unameTo);
41+
public Task AcceptInviteAsync(string unameFrom, string unameTo) => contactService.AcceptInviteAsync(unameFrom, unameTo);
4042
public IEnumerable<Contact> GetInvites(string uname) => contactService.GetInvites(uname);
4143
public IEnumerable<Contact> GetContacts(string uname) => contactService.GetContacts(uname);
4244
}

Server/DbService/GroupService.cs

+87-76
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,20 @@ namespace Server.DbService
1313

1414
public interface IGroupService
1515
{
16-
void AddGroup(int uid, string groupName);
17-
void AddGroup(string uname, string groupName);
16+
Task AddGroupAsync(int uid, string groupName);
17+
//void AddGroup(string uname, string groupName);
1818

19-
void RenameGroup(string groupName, string newName);
19+
//void RenameGroup(string groupName, string newName);
20+
Task RenameGroupAsync(int id, string newName);
2021

21-
bool AddUserToGroup(string uname, string groupName);
22-
bool AddUserToGroup(int uid, string groupName);
22+
//bool AddUserToGroupAsync(string uname, string groupName);
23+
Task<bool> AddUserToGroupAsync(int uid, string groupName);
2324

2425
IEnumerable<Group> GetUserGroups(int uid);
25-
IEnumerable<Group> GetUserGroups(string uname);
26+
//IEnumerable<Group> GetUserGroups(string uname);
2627

27-
void RemoveUserFromGroup(int uid, string groupName);
28-
void RemoveUserFromGroup(string uname, string groupName);
28+
Task RemoveUserFromGroupAsync(int uid, string groupName);
29+
// void RemoveUserFromGroup(string uname, string groupName);
2930
}
3031

3132
public class GroupService : IGroupService
@@ -34,67 +35,77 @@ public class GroupService : IGroupService
3435

3536
public GroupService(BabbleContext db) => this.db = db;
3637

37-
public void RenameGroup(string groupName, string newName)
38+
//public void RenameGroup(string groupName, string newName)
39+
//{
40+
// Group? group = db.Groups.FirstOrDefault(g => g.Name == groupName);
41+
// if(group != null)
42+
// {
43+
// group.Name = newName;
44+
// db.SaveChangesAsync();
45+
// }
46+
//}
47+
public async Task RenameGroupAsync(int id, string newName)
3848
{
39-
Group? group = db.Groups.FirstOrDefault(g => g.Name == groupName);
40-
if(group != null)
49+
Group? group = db.Groups.Find(id);
50+
if (group != null)
4151
{
4252
group.Name = newName;
43-
db.SaveChangesAsync();
53+
await db.SaveChangesAsync();
4454
}
4555
}
4656

47-
public void AddGroup(int uid, string groupName)
57+
public async Task AddGroupAsync(int uid, string groupName)
4858
{
4959
Group group = new Group { Name = groupName };
5060
User? user = db.Users.Find(uid);
5161

5262
if (user != null)
5363
{
5464
db.Groups.Add(group);
55-
db.UserGroups.Add(new UserGroup { Group = group, User = user }); // maybe not working, should test
56-
db.SaveChanges();
65+
db.UserGroups.Add(new UserGroup { Group = group, User = user });
66+
await db.SaveChangesAsync();
5767

5868
//db.UserGroups.Add(new UserGroup { Group = group, UserId = uid });
5969
}
6070
}
6171

62-
public void AddGroup(string uname, string groupName)
63-
{
64-
Group group = new Group { Name = groupName };
65-
User? user = db.Users.FirstOrDefault(u => u.Name == uname);
66-
67-
if (user != null)
68-
{
69-
db.Groups.Add(group);
70-
db.UserGroups.Add(new UserGroup { Group = group, User = user }); // maybe not working, should test
71-
db.SaveChanges();
72-
}
73-
}
74-
75-
public bool AddUserToGroup(string uname, string groupName)
76-
{
77-
Group? group = db.Groups.FirstOrDefault(g => g.Name == groupName);
78-
User? user = db.Users.FirstOrDefault(u => u.Name == uname);
79-
80-
if (group != null && user != null)
81-
{
82-
db.UserGroups.Add(new UserGroup { User = user, Group = group });
83-
db.SaveChanges();
84-
return true;
85-
}
86-
return false;
87-
}
88-
89-
public bool AddUserToGroup(int uid, string groupName)
72+
// Try to not use it
73+
//public void AddGroup(string uname, string groupName)
74+
//{
75+
// Group group = new Group { Name = groupName };
76+
// User? user = db.Users.FirstOrDefault(u => u.Name == uname);
77+
78+
// if (user != null)
79+
// {
80+
// db.Groups.Add(group);
81+
// db.UserGroups.Add(new UserGroup { Group = group, User = user }); // maybe not working, should test
82+
// db.SaveChanges();
83+
// }
84+
//}
85+
86+
//public async Task<bool> AddUserToGroupAsync(string uname, string groupName)
87+
//{
88+
// Group? group = db.Groups.FirstOrDefault(g => g.Name == groupName);
89+
// User? user = db.Users.FirstOrDefault(u => u.Name == uname);
90+
91+
// if (group != null && user != null)
92+
// {
93+
// db.UserGroups.Add(new UserGroup { User = user, Group = group });
94+
// await db.SaveChangesAsync();
95+
// return true;
96+
// }
97+
// return false;
98+
//}
99+
100+
public async Task<bool> AddUserToGroupAsync(int uid, string groupName)
90101
{
91102
Group? group = db.Groups.FirstOrDefault(g => g.Name == groupName);
92103
User? user = db.Users.Find(uid);
93104

94105
if (group != null && user != null)
95106
{
96107
db.UserGroups.Add(new UserGroup { User = user, Group = group });
97-
db.SaveChanges();
108+
await db.SaveChangesAsync();
98109
return true;
99110
}
100111
return false;
@@ -109,20 +120,20 @@ public IEnumerable<Group> GetUserGroups(int uid)
109120
}
110121

111122
// throw exeption "UserNotFound" if user with this name is not found
112-
public IEnumerable<Group> GetUserGroups(string uname)
113-
{
114-
User? user = db.Users.FirstOrDefault(u => u.Name == uname);
115-
if (user != null)
116-
{
117-
return from ug in db.UserGroups
118-
where ug.UserId == user.Id
119-
select ug.Group;
120-
}
121-
throw new Exception("UserNotFound");
122-
}
123+
//public IEnumerable<Group> GetUserGroups(string uname)
124+
//{
125+
// User? user = db.Users.FirstOrDefault(u => u.Name == uname);
126+
// if (user != null)
127+
// {
128+
// return from ug in db.UserGroups
129+
// where ug.UserId == user.Id
130+
// select ug.Group;
131+
// }
132+
// throw new Exception("UserNotFound");
133+
//}
123134

124135
// TODO: add throw exeptions
125-
public void RemoveUserFromGroup(int uid, string groupName)
136+
public async Task RemoveUserFromGroupAsync(int uid, string groupName)
126137
{
127138
Group? group = db.Groups.FirstOrDefault(g => g.Name == groupName);
128139
if (group != null)
@@ -137,34 +148,34 @@ public void RemoveUserFromGroup(int uid, string groupName)
137148
db.Groups.Remove(group);
138149
}
139150

140-
db.SaveChanges();
151+
await db.SaveChangesAsync();
141152
}
142153
}
143154
}
144155

145156

146-
public void RemoveUserFromGroup(string uname, string groupName)
147-
{
148-
Group? group = db.Groups.FirstOrDefault(g => g.Name == groupName);
149-
User? user = db.Users.FirstOrDefault(u => u.Name == uname);
150-
if (group != null && user != null)
151-
{
152-
UserGroup? userGroup = db.UserGroups.FirstOrDefault(ug => ug.GroupId == group.Id && ug.UserId == user.Id);
153-
//UserGroup? userGroup = db.UserGroups.FirstOrDefault(ug => ug.Group.Name == groupName && ug.User.Name == uname);
157+
//public void RemoveUserFromGroup(string uname, string groupName)
158+
//{
159+
// Group? group = db.Groups.FirstOrDefault(g => g.Name == groupName);
160+
// User? user = db.Users.FirstOrDefault(u => u.Name == uname);
161+
// if (group != null && user != null)
162+
// {
163+
// UserGroup? userGroup = db.UserGroups.FirstOrDefault(ug => ug.GroupId == group.Id && ug.UserId == user.Id);
164+
// //UserGroup? userGroup = db.UserGroups.FirstOrDefault(ug => ug.Group.Name == groupName && ug.User.Name == uname);
154165

155-
if (userGroup != null)
156-
{
157-
db.UserGroups.Remove(userGroup);
166+
// if (userGroup != null)
167+
// {
168+
// db.UserGroups.Remove(userGroup);
158169

159-
if(db.UserGroups.Count(ug => ug.GroupId == group.Id) <= 1)
160-
{
161-
db.Groups.Remove(group);
162-
}
170+
// if(db.UserGroups.Count(ug => ug.GroupId == group.Id) <= 1)
171+
// {
172+
// db.Groups.Remove(group);
173+
// }
163174

164-
db.SaveChanges();
165-
}
175+
// db.SaveChanges();
176+
// }
166177

167-
}
168-
}
178+
// }
179+
//}
169180
}
170181
}

0 commit comments

Comments
 (0)