feat: codegen script to geenrate type aliases in adapters

This commit is contained in:
Aravinth Manivannan 2025-01-10 18:55:48 +05:30
parent 5f5903e31b
commit c296451401
Signed by: realaravinth
GPG key ID: F8F50389936984FF

59
utils/adapter_type_gen.sh Executable file
View file

@ -0,0 +1,59 @@
#!/bin/bash
help() {
echo "Usage: adapter_type_gen.sh
<domain name with first letter in caps>
<aggregate struct name>"
}
run() {
echo "
pub type $1$2CqrsExec = Arc<PostgresCqrs<$2>>;
pub type $1$2CqrsView = Arc<dyn ViewRepository<$2View, $2>>;
pub type Web$1$2CqrsView = Data<$1$2CqrsView>;
// struct
${2,,}: $1$2CqrsExec,
// trait impl
self.${2,,}.execute(aggregate_id, command.clone()).await?;
// $2_view.rs DB stuff
use crate::${1,,}::adapters::types::{$1$2CqrsExec, $1$2CqrsView};
use crate::${1,,}::application::services::$1ServicesObj;
pub fn init_cqrs(
db: $1DBPostgresAdapter,
services: $1ServicesObj,
) -> ($1$2CqrsExec, $1$2CqrsView) {
let queries: Vec<Box<dyn Query<$2>>> = vec![Box::new(db.clone())];
let pool = db.pool.clone();
(
std::sync::Arc::new(postgres_es::postgres_cqrs(pool.clone(), queries, services)),
std::sync::Arc::new(db.clone()),
)
}
"
}
if [ -z $1 ]
then
help
elif [ -z $2 ]
then
help
else
run $1 $2 $3 $4 | wl-copy
run $1 $2 $3 $4
fi