refactor: complete v0.8 core architecture
This commit is contained in:
1 parent
f138a645f8
commit
d7e0ac7679
98 files changed
+8413
-3044
No files matched your search
+51
-27
@@ -19,29 +19,41 @@ async fn test_soft_delete_reserves_slug() {
|
||||
let config = create_temp_config(temp_dir.clone());
|
||||
|
||||
let db = Db::init(&config).expect("Failed to init Db");
|
||||
let system_conn = db.system.lock().unwrap();
|
||||
let urls_conn = db.global_urls.lock().unwrap();
|
||||
let reserved_conn = db.reserved.lock().unwrap();
|
||||
let pages_conn = db.global_landing_pages.lock().unwrap();
|
||||
|
||||
// Register slug
|
||||
bzod::db::users::register_global_slug(
|
||||
&system_conn,
|
||||
"!slug-to-delete",
|
||||
10,
|
||||
"url",
|
||||
"url_123",
|
||||
"active",
|
||||
)
|
||||
.unwrap();
|
||||
let now = chrono::Utc::now().to_rfc3339();
|
||||
urls_conn
|
||||
.execute(
|
||||
"INSERT INTO global_urls (slug, owner_tenant_id, target_id, created_at, updated_at, status, retired_at)
|
||||
VALUES ('!slug-to-delete', 't-tenant10', 'url_123', ?1, ?2, 'active', NULL);",
|
||||
rusqlite::params![now, now],
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
// Soft delete slug
|
||||
bzod::db::users::soft_delete_global_slug(&system_conn, "!slug-to-delete", 10).unwrap();
|
||||
// Soft delete slug (disable it)
|
||||
urls_conn
|
||||
.execute(
|
||||
"UPDATE global_urls SET status = 'disabled', retired_at = ?1 WHERE slug = ?2;",
|
||||
rusqlite::params![now, "!slug-to-delete"],
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
// Verify it is not available (keeps the slug reserved)
|
||||
let avail = bzod::db::users::is_slug_available(&system_conn, "!slug-to-delete").unwrap();
|
||||
let avail = bzod::db::slugs::is_slug_available(
|
||||
&reserved_conn,
|
||||
&urls_conn,
|
||||
&pages_conn,
|
||||
"!slug-to-delete",
|
||||
)
|
||||
.unwrap();
|
||||
assert!(!avail);
|
||||
|
||||
let status: String = system_conn
|
||||
let status: String = urls_conn
|
||||
.query_row(
|
||||
"SELECT status FROM global_slugs WHERE slug = ?1;",
|
||||
"SELECT status FROM global_urls WHERE slug = ?1;",
|
||||
["!slug-to-delete"],
|
||||
|row| row.get(0),
|
||||
)
|
||||
@@ -59,24 +71,36 @@ async fn test_permanent_delete_releases_slug() {
|
||||
let config = create_temp_config(temp_dir.clone());
|
||||
|
||||
let db = Db::init(&config).expect("Failed to init Db");
|
||||
let system_conn = db.system.lock().unwrap();
|
||||
let urls_conn = db.global_urls.lock().unwrap();
|
||||
let reserved_conn = db.reserved.lock().unwrap();
|
||||
let pages_conn = db.global_landing_pages.lock().unwrap();
|
||||
|
||||
// Register slug
|
||||
bzod::db::users::register_global_slug(
|
||||
&system_conn,
|
||||
"!slug-to-purge",
|
||||
10,
|
||||
"url",
|
||||
"url_456",
|
||||
"active",
|
||||
)
|
||||
.unwrap();
|
||||
let now = chrono::Utc::now().to_rfc3339();
|
||||
urls_conn
|
||||
.execute(
|
||||
"INSERT INTO global_urls (slug, owner_tenant_id, target_id, created_at, updated_at, status, retired_at)
|
||||
VALUES ('!slug-to-purge', 't-tenant10', 'url_456', ?1, ?2, 'active', NULL);",
|
||||
rusqlite::params![now, now],
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
// Release global slug (permanent deletion)
|
||||
bzod::db::users::release_global_slug(&system_conn, "!slug-to-purge", 10).unwrap();
|
||||
urls_conn
|
||||
.execute(
|
||||
"DELETE FROM global_urls WHERE slug = ?1;",
|
||||
["!slug-to-purge"],
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
// Verify slug is released (available for reuse)
|
||||
let avail = bzod::db::users::is_slug_available(&system_conn, "!slug-to-purge").unwrap();
|
||||
let avail = bzod::db::slugs::is_slug_available(
|
||||
&reserved_conn,
|
||||
&urls_conn,
|
||||
&pages_conn,
|
||||
"!slug-to-purge",
|
||||
)
|
||||
.unwrap();
|
||||
assert!(avail);
|
||||
|
||||
let _ = fs::remove_dir_all(&temp_dir);
|
||||
|
||||
Reference in new issue
Block a user