feat: initialize thoughts-frontend with Next.js, TypeScript, and ESLint
- Add ESLint configuration for Next.js and TypeScript support. - Create Next.js configuration file with standalone output option. - Initialize package.json with scripts for development, build, and linting. - Set up PostCSS configuration for Tailwind CSS. - Add SVG assets for UI components. - Create TypeScript configuration for strict type checking and module resolution.
This commit is contained in:
8
thoughts-backend/utils/src/db.rs
Normal file
8
thoughts-backend/utils/src/db.rs
Normal file
@@ -0,0 +1,8 @@
|
||||
use migration::{sea_orm::DatabaseConnection, DbErr, Migrator, MigratorTrait, SchemaManager};
|
||||
|
||||
pub async fn migrate(conn: &DatabaseConnection) -> Result<(), DbErr> {
|
||||
let schema_manager = SchemaManager::new(conn);
|
||||
Migrator::up(conn, None).await?;
|
||||
assert!(schema_manager.has_table("user").await?);
|
||||
Ok(())
|
||||
}
|
22
thoughts-backend/utils/src/file.rs
Normal file
22
thoughts-backend/utils/src/file.rs
Normal file
@@ -0,0 +1,22 @@
|
||||
use std::process::Command;
|
||||
|
||||
fn touch(file_name: &str) {
|
||||
if cfg!(target_os = "windows") {
|
||||
Command::new("cmd")
|
||||
.args(["/C", &format!("type nul >> {}", file_name)])
|
||||
.output()
|
||||
.expect("failed to execute touch");
|
||||
} else {
|
||||
Command::new("touch")
|
||||
.arg(file_name)
|
||||
.output()
|
||||
.expect("failed to execute touch");
|
||||
}
|
||||
}
|
||||
|
||||
pub fn create_dev_db(db_url: &str) {
|
||||
let prefix = "sqlite://";
|
||||
if let Some(file_name) = db_url.strip_prefix(prefix) {
|
||||
touch(file_name);
|
||||
}
|
||||
}
|
6
thoughts-backend/utils/src/lib.rs
Normal file
6
thoughts-backend/utils/src/lib.rs
Normal file
@@ -0,0 +1,6 @@
|
||||
mod db;
|
||||
mod file;
|
||||
pub mod testing;
|
||||
|
||||
pub use db::migrate;
|
||||
pub use file::create_dev_db;
|
21
thoughts-backend/utils/src/testing/api/mod.rs
Normal file
21
thoughts-backend/utils/src/testing/api/mod.rs
Normal file
@@ -0,0 +1,21 @@
|
||||
use axum::{body::Body, http::Request, response::Response, Router};
|
||||
use tower::ServiceExt;
|
||||
|
||||
pub async fn make_get_request(app: Router, url: &str) -> Response {
|
||||
app.oneshot(Request::builder().uri(url).body(Body::empty()).unwrap())
|
||||
.await
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
pub async fn make_post_request(app: Router, url: &str, body: String) -> Response {
|
||||
app.oneshot(
|
||||
Request::builder()
|
||||
.method("POST")
|
||||
.uri(url)
|
||||
.header("Content-Type", "application/json")
|
||||
.body(Body::from(body))
|
||||
.unwrap(),
|
||||
)
|
||||
.await
|
||||
.unwrap()
|
||||
}
|
9
thoughts-backend/utils/src/testing/db/mod.rs
Normal file
9
thoughts-backend/utils/src/testing/db/mod.rs
Normal file
@@ -0,0 +1,9 @@
|
||||
use sea_orm::{Database, DatabaseConnection, DbErr};
|
||||
|
||||
use crate::migrate;
|
||||
|
||||
pub async fn setup_test_db(db_url: &str) -> Result<DatabaseConnection, DbErr> {
|
||||
let db = Database::connect(db_url).await?;
|
||||
migrate(&db).await?;
|
||||
Ok(db)
|
||||
}
|
5
thoughts-backend/utils/src/testing/mod.rs
Normal file
5
thoughts-backend/utils/src/testing/mod.rs
Normal file
@@ -0,0 +1,5 @@
|
||||
mod api;
|
||||
mod db;
|
||||
|
||||
pub use api::{make_get_request, make_post_request};
|
||||
pub use db::setup_test_db;
|
Reference in New Issue
Block a user