-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIndexesExtension.cs
More file actions
65 lines (56 loc) · 3 KB
/
IndexesExtension.cs
File metadata and controls
65 lines (56 loc) · 3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
namespace HttpsRichardy.Federation.Infrastructure.IoC.Extensions;
[ExcludeFromCodeCoverage]
public static class IndexesExtension
{
public static void EnsureIndexes(this IMongoDatabase database)
{
#pragma warning disable IDE0055
var userCollection = database.GetCollection<User>("federation.users");
var permissionCollection = database.GetCollection<Permission>("federation.permissions");
var groupCollection = database.GetCollection<Group>("federation.groups");
var tokenCollection = database.GetCollection<SecurityToken>("federation.tokens");
var realmCollection = database.GetCollection<Realm>("federation.realms");
var userIndexes = new[]
{
new CreateIndexModel<User>(Builders<User>.IndexKeys.Ascending(user => user.Username)),
new CreateIndexModel<User>(Builders<User>.IndexKeys.Ascending(user => user.IsDeleted)),
new CreateIndexModel<User>(Builders<User>.IndexKeys
.Ascending(user => user.Username)
.Ascending(user => user.RealmId))
};
var groupIndexes = new[]
{
new CreateIndexModel<Group>(Builders<Group>.IndexKeys.Ascending(group => group.Name)),
new CreateIndexModel<Group>(Builders<Group>.IndexKeys.Ascending(group => group.RealmId)),
new CreateIndexModel<Group>(Builders<Group>.IndexKeys
.Ascending(group => group.RealmId)
.Ascending(group => group.Name))
};
var permissionIndexes = new[]
{
new CreateIndexModel<Permission>(Builders<Permission>.IndexKeys.Ascending(permission => permission.Name)),
new CreateIndexModel<Permission>(Builders<Permission>.IndexKeys.Ascending(permission => permission.RealmId)),
new CreateIndexModel<Permission>(Builders<Permission>.IndexKeys
.Ascending(permission => permission.RealmId)
.Ascending(permission => permission.Name))
};
var tokenIndexes = new[]
{
new CreateIndexModel<SecurityToken>(Builders<SecurityToken>.IndexKeys.Ascending(token => token.UserId)),
new CreateIndexModel<SecurityToken>(Builders<SecurityToken>.IndexKeys.Ascending(token => token.RealmId)),
new CreateIndexModel<SecurityToken>(Builders<SecurityToken>.IndexKeys
.Ascending(token => token.UserId)
.Ascending(token => token.RealmId))
};
var realmIndexes = new[]
{
new CreateIndexModel<Realm>(Builders<Realm>.IndexKeys.Ascending(realm => realm.Name)),
new CreateIndexModel<Realm>(Builders<Realm>.IndexKeys.Ascending(realm => realm.ClientId))
};
userCollection.Indexes.CreateMany(userIndexes);
permissionCollection.Indexes.CreateMany(permissionIndexes);
groupCollection.Indexes.CreateMany(groupIndexes);
tokenCollection.Indexes.CreateMany(tokenIndexes);
realmCollection.Indexes.CreateMany(realmIndexes);
}
}