finish adding keystore v2 stuffs

This commit is contained in:
core 2023-08-18 08:01:55 -04:00
parent e901f63bb9
commit 3dadd40bba
Signed by: core
GPG Key ID: FDBF740DADDCEECF
4 changed files with 186 additions and 0 deletions

View File

@ -0,0 +1,41 @@
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.2
use sea_orm::entity::prelude::*;
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
#[sea_orm(table_name = "keystore_entry")]
pub struct Model {
#[sea_orm(primary_key, auto_increment = false)]
pub id: String,
pub host: String,
pub counter: i32,
#[sea_orm(column_type = "Binary(BlobSize::Blob(None))")]
pub signing_key: Vec<u8>,
#[sea_orm(column_type = "Binary(BlobSize::Blob(None))")]
pub client_signing_key: Vec<u8>,
#[sea_orm(column_type = "Binary(BlobSize::Blob(None))")]
pub client_dh_key: Vec<u8>,
pub config: String,
#[sea_orm(column_type = "Binary(BlobSize::Blob(None))")]
pub certificate: Vec<u8>,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {
#[sea_orm(
belongs_to = "super::host::Entity",
from = "Column::Host",
to = "super::host::Column::Id",
on_update = "NoAction",
on_delete = "NoAction"
)]
Host,
}
impl Related<super::host::Entity> for Entity {
fn to() -> RelationDef {
Relation::Host.def()
}
}
impl ActiveModelBehavior for ActiveModel {}

View File

@ -0,0 +1,16 @@
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.2
use sea_orm::entity::prelude::*;
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
#[sea_orm(table_name = "keystore_host")]
pub struct Model {
#[sea_orm(primary_key, auto_increment = false)]
pub id: String,
pub counter: i32,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {}
impl ActiveModelBehavior for ActiveModel {}

View File

@ -0,0 +1,39 @@
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(KeystoreHost::Table)
.col(
ColumnDef::new(KeystoreHost::Id)
.string()
.not_null()
.primary_key()
)
.col(
ColumnDef::new(KeystoreHost::Counter)
.integer()
.not_null()
)
.to_owned()
).await
}
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.drop_table(Table::drop().table(KeystoreHost::Table).to_owned())
.await
}
}
#[derive(Iden)]
enum KeystoreHost {
Table,
Id,
Counter,
}

View File

@ -0,0 +1,90 @@
use sea_orm_migration::prelude::*;
use crate::m20230427_170037_create_table_hosts::Host;
#[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(KeystoreEntry::Table)
.col(
ColumnDef::new(KeystoreEntry::Id)
.string()
.not_null()
.primary_key()
)
.col(
ColumnDef::new(KeystoreEntry::Host)
.string()
.not_null()
)
.col(
ColumnDef::new(KeystoreEntry::Counter)
.integer()
.not_null()
)
.col(
ColumnDef::new(KeystoreEntry::SigningKey)
.binary()
.not_null()
)
.col(
ColumnDef::new(KeystoreEntry::ClientSigningKey)
.binary()
.not_null()
)
.col(
ColumnDef::new(KeystoreEntry::ClientDHKey)
.binary()
.not_null()
)
.col(
ColumnDef::new(KeystoreEntry::Config)
.string()
.not_null()
)
.col(
ColumnDef::new(KeystoreEntry::Certificate)
.binary()
.not_null()
)
.foreign_key(
ForeignKey::create()
.from(KeystoreEntry::Table, KeystoreEntry::Host)
.to(Host::Table, Host::Id)
)
.index(
Index::create()
.name("idx-keystore-entry-host-counter-unique")
.table(KeystoreEntry::Table)
.col(KeystoreEntry::Host)
.col(KeystoreEntry::Counter)
.unique()
)
.to_owned()
).await
}
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.drop_table(Table::drop().table(KeystoreEntry::Table).to_owned())
.await
}
}
/// Learn more at https://docs.rs/sea-query#iden
#[derive(Iden)]
enum KeystoreEntry {
Table,
Id,
Host,
Counter,
SigningKey,
ClientSigningKey,
ClientDHKey,
Config,
Certificate
}