oxidetalis/crates/oxidetalis_migrations
Awiteb 8888bf2d60
feat: Chat request implementation
In this patch, I have implemented the chat request and response from OTMP
protocol. The changes include:
- New `in_chat_request` and `out_chat_request` database tables
- New `users_status` table to store user status (whitelisted or blacklisted)
- New server events:
    - `ChatRequest` To send chat request comes from some user
    - `ChatRequestResponse` To send chat request response to some user
- New client events:
    - `ChatRequest` To send chat request to some user
    - `ChatRequestResponse` To send chat request response to some user
- `ws_errors` macro to create websocket errors
- `/user/whitelist` and `/user/blacklist` API to list whitelisted and
blacklisted users

Fixes: #2
Reviewed-on: #14
Reviewed-by: Amjad Alsharafi <me@amjad.alsharafi.dev>
Helped-by: Amjad Alsharafi <me@amjad.alsharafi.dev>
Signed-off-by: Awiteb <a@4rs.nl>
2024-07-23 00:18:36 +03:00
..
src feat: Chat request implementation 2024-07-23 00:18:36 +03:00
Cargo.toml chore: Initialize the project 2024-06-26 23:05:17 +03:00
README.md chore: Initialize the project 2024-06-26 23:05:17 +03:00

Oxidetalis database migrations

This crate contains the database migrations for the Oxidetalis homeserver, using SeaORM.

How to run the migrations

The migrations are run when the server starts. The server will check if the database is up-to-date and run the migrations if needed. So, you don't need to run the migrations manually.

How to create a new migration

The migrations will saved in the database, so SeaORM will track the migrations, and you don't need to worry about the migration files, just write the migration and SeaORM will take care of the rest.

To create a new migration, you need to create a new migration file in the src directory. You can name the file anything you want, for example, create_users_table.rs. The file should contain the migration code, you can take this as a template:

use sea_orm_migration::prelude::*;

#[derive(DeriveMigrationName)]
pub struct Migration;

#[async_trait::async_trait]
impl MigrationTrait for Migration {
    async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
        // Here you can write the migration code, the `manager` can do anything you want.
        
        // When the homeserver starts, it will run the `up` function for each migration that is not run yet.
    }
}

#[derive(DeriveIden)]
enum TableName {
    Table, // Required for the table name
    Id, // Required for the primary key
    // Add more columns here
d}

[!NOTE] Don't write the down function, I prefer to do each migration in a separate migration file, so you don't need to write the down function. If you want to delete a table later, you can create a new migration file that deletes the table.

After you write the migration code, you need to add the migration to the src/lib.rs file.

License

This crate is licensed under the MIT license.