forked from jmug/stoatchat
feat(db): add indexes to various collections
This commit is contained in:
@@ -102,6 +102,12 @@ pub async fn create_database() {
|
|||||||
"content": "text"
|
"content": "text"
|
||||||
},
|
},
|
||||||
"name": "content"
|
"name": "content"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"channel": 1
|
||||||
|
},
|
||||||
|
"name": "channel"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -110,6 +116,56 @@ pub async fn create_database() {
|
|||||||
.await
|
.await
|
||||||
.expect("Failed to create message index.");
|
.expect("Failed to create message index.");
|
||||||
|
|
||||||
|
get_db()
|
||||||
|
.run_command(
|
||||||
|
doc! {
|
||||||
|
"createIndexes": "messages",
|
||||||
|
"indexes": [
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"_id.channel": 1,
|
||||||
|
"_id.user": 1,
|
||||||
|
},
|
||||||
|
"name": "compound_id"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"_id.user": 1,
|
||||||
|
},
|
||||||
|
"name": "user_id"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.expect("Failed to create channel_unreads index.");
|
||||||
|
|
||||||
|
get_db()
|
||||||
|
.run_command(
|
||||||
|
doc! {
|
||||||
|
"createIndexes": "messages",
|
||||||
|
"indexes": [
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"_id.server": 1,
|
||||||
|
"_id.user": 1,
|
||||||
|
},
|
||||||
|
"name": "compound_id"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"_id.user": 1,
|
||||||
|
},
|
||||||
|
"name": "user_id"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.expect("Failed to create server_members index.");
|
||||||
|
|
||||||
db.collection("migrations")
|
db.collection("migrations")
|
||||||
.insert_one(
|
.insert_one(
|
||||||
doc! {
|
doc! {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ struct MigrationInfo {
|
|||||||
revision: i32,
|
revision: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const LATEST_REVISION: i32 = 11;
|
pub const LATEST_REVISION: i32 = 12;
|
||||||
|
|
||||||
pub async fn migrate_database() {
|
pub async fn migrate_database() {
|
||||||
let migrations = get_collection("migrations");
|
let migrations = get_collection("migrations");
|
||||||
@@ -372,6 +372,78 @@ pub async fn run_migrations(revision: i32) -> i32 {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if revision <= 11 {
|
||||||
|
info!("Running migration [revision 11 / 2021-11-14]: Add indexes to database.");
|
||||||
|
|
||||||
|
get_db()
|
||||||
|
.run_command(
|
||||||
|
doc! {
|
||||||
|
"createIndexes": "messages",
|
||||||
|
"indexes": [
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"channel": 1
|
||||||
|
},
|
||||||
|
"name": "channel"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.expect("Failed to create message index.");
|
||||||
|
|
||||||
|
get_db()
|
||||||
|
.run_command(
|
||||||
|
doc! {
|
||||||
|
"createIndexes": "messages",
|
||||||
|
"indexes": [
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"_id.channel": 1,
|
||||||
|
"_id.user": 1,
|
||||||
|
},
|
||||||
|
"name": "compound_id"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"_id.user": 1,
|
||||||
|
},
|
||||||
|
"name": "user_id"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.expect("Failed to create channel_unreads index.");
|
||||||
|
|
||||||
|
get_db()
|
||||||
|
.run_command(
|
||||||
|
doc! {
|
||||||
|
"createIndexes": "messages",
|
||||||
|
"indexes": [
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"_id.server": 1,
|
||||||
|
"_id.user": 1,
|
||||||
|
},
|
||||||
|
"name": "compound_id"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"_id.user": 1,
|
||||||
|
},
|
||||||
|
"name": "user_id"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.expect("Failed to create server_members index.");
|
||||||
|
}
|
||||||
|
|
||||||
// Need to migrate fields on attachments, change `user_id`, `object_id`, etc to `parent`.
|
// Need to migrate fields on attachments, change `user_id`, `object_id`, etc to `parent`.
|
||||||
|
|
||||||
// Reminder to update LATEST_REVISION when adding new migrations.
|
// Reminder to update LATEST_REVISION when adding new migrations.
|
||||||
|
|||||||
Reference in New Issue
Block a user