a lot
This commit is contained in:
@@ -1,12 +1,20 @@
|
||||
pub use sea_orm_migration::prelude::*;
|
||||
|
||||
mod m20260616_000001_create_tables;
|
||||
mod m20260616_000001_create_users;
|
||||
mod m20260616_000002_create_stream_key;
|
||||
mod m20260616_000003_create_stream_session;
|
||||
mod m20260616_000004_create_auth_session;
|
||||
|
||||
pub struct Migrator;
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl MigratorTrait for Migrator {
|
||||
fn migrations() -> Vec<Box<dyn MigrationTrait>> {
|
||||
vec![Box::new(m20260616_000001_create_tables::Migration)]
|
||||
vec![
|
||||
Box::new(m20260616_000001_create_users::Migration),
|
||||
Box::new(m20260616_000002_create_stream_key::Migration),
|
||||
Box::new(m20260616_000003_create_stream_session::Migration),
|
||||
Box::new(m20260616_000004_create_auth_session::Migration),
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
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> {
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(Users::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(Users::Id)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(Users::Username)
|
||||
.string()
|
||||
.not_null()
|
||||
.unique_key(),
|
||||
)
|
||||
.col(ColumnDef::new(Users::HashedPassword).string())
|
||||
.col(ColumnDef::new(Users::StreamKeyLimit).integer().default(3))
|
||||
.to_owned(),
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
manager
|
||||
.drop_table(Table::drop().table(Users::Table).to_owned())
|
||||
.await
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
pub enum Users {
|
||||
Table,
|
||||
Id,
|
||||
Username,
|
||||
HashedPassword,
|
||||
StreamKeyLimit,
|
||||
}
|
||||
+14
-46
@@ -1,5 +1,7 @@
|
||||
use sea_orm_migration::prelude::*;
|
||||
|
||||
use super::m20260616_000001_create_users::Users;
|
||||
|
||||
#[derive(DeriveMigrationName)]
|
||||
pub struct Migration;
|
||||
|
||||
@@ -18,6 +20,7 @@ impl MigrationTrait for Migration {
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(StreamKey::UserId).integer().not_null())
|
||||
.col(
|
||||
ColumnDef::new(StreamKey::KeyValue)
|
||||
.string()
|
||||
@@ -31,73 +34,38 @@ impl MigrationTrait for Migration {
|
||||
.not_null()
|
||||
.default(true),
|
||||
)
|
||||
.col(ColumnDef::new(StreamKey::CreatedAt).date_time().not_null())
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(StreamSession::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(StreamSession::Id)
|
||||
.integer()
|
||||
ColumnDef::new(StreamKey::IsUnlisted)
|
||||
.boolean()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
.default(true),
|
||||
)
|
||||
.col(ColumnDef::new(StreamSession::StreamKeyId).integer().not_null())
|
||||
.col(ColumnDef::new(StreamSession::StartedAt).date_time().not_null())
|
||||
.col(ColumnDef::new(StreamSession::EndedAt).date_time().null())
|
||||
.col(ColumnDef::new(StreamKey::CreatedAt).date_time().not_null())
|
||||
.foreign_key(
|
||||
ForeignKey::create()
|
||||
.from(StreamSession::Table, StreamSession::StreamKeyId)
|
||||
.to(StreamKey::Table, StreamKey::Id),
|
||||
.from(StreamKey::Table, StreamKey::UserId)
|
||||
.to(Users::Table, Users::Id),
|
||||
)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
// Seed the default stream key so OBS can connect out of the box
|
||||
manager
|
||||
.get_connection()
|
||||
.execute_unprepared(
|
||||
"INSERT OR IGNORE INTO stream_key (key_value, label, is_active, created_at) \
|
||||
VALUES ('test', 'Default', 1, datetime('now'))",
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
.await
|
||||
}
|
||||
|
||||
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
manager
|
||||
.drop_table(Table::drop().table(StreamSession::Table).to_owned())
|
||||
.await?;
|
||||
manager
|
||||
.drop_table(Table::drop().table(StreamKey::Table).to_owned())
|
||||
.await?;
|
||||
Ok(())
|
||||
.await
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum StreamKey {
|
||||
pub enum StreamKey {
|
||||
Table,
|
||||
Id,
|
||||
UserId,
|
||||
KeyValue,
|
||||
Label,
|
||||
IsActive,
|
||||
IsUnlisted,
|
||||
CreatedAt,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum StreamSession {
|
||||
Table,
|
||||
Id,
|
||||
StreamKeyId,
|
||||
StartedAt,
|
||||
EndedAt,
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
use sea_orm_migration::prelude::*;
|
||||
|
||||
use super::m20260616_000002_create_stream_key::StreamKey;
|
||||
|
||||
#[derive(DeriveMigrationName)]
|
||||
pub struct Migration;
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl MigrationTrait for Migration {
|
||||
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(StreamSession::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(StreamSession::Id)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(StreamSession::StreamKeyId)
|
||||
.integer()
|
||||
.not_null(),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(StreamSession::StartedAt)
|
||||
.date_time()
|
||||
.not_null(),
|
||||
)
|
||||
.col(ColumnDef::new(StreamSession::EndedAt).date_time().null())
|
||||
.foreign_key(
|
||||
ForeignKey::create()
|
||||
.from(StreamSession::Table, StreamSession::StreamKeyId)
|
||||
.to(StreamKey::Table, StreamKey::Id),
|
||||
)
|
||||
.to_owned(),
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
manager
|
||||
.drop_table(Table::drop().table(StreamSession::Table).to_owned())
|
||||
.await
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
pub enum StreamSession {
|
||||
Table,
|
||||
Id,
|
||||
StreamKeyId,
|
||||
StartedAt,
|
||||
EndedAt,
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
use sea_orm_migration::prelude::*;
|
||||
|
||||
use crate::m20260616_000001_create_users::Users;
|
||||
|
||||
#[derive(DeriveMigrationName)]
|
||||
pub struct Migration;
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl MigrationTrait for Migration {
|
||||
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(AuthSession::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(AuthSession::Id)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(AuthSession::IdUser).integer().not_null())
|
||||
.col(ColumnDef::new(AuthSession::Value).string())
|
||||
.foreign_key(
|
||||
ForeignKey::create()
|
||||
.from(AuthSession::Table, AuthSession::IdUser)
|
||||
.to(Users::Table, Users::Id),
|
||||
)
|
||||
.to_owned(),
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
manager
|
||||
.drop_table(Table::drop().table(AuthSession::Table).to_owned())
|
||||
.await
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
pub enum AuthSession {
|
||||
Table,
|
||||
Id,
|
||||
IdUser,
|
||||
Value,
|
||||
}
|
||||
Reference in New Issue
Block a user