Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Database restructure #458

Draft
wants to merge 32 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
4684f16
unify migrations
aumetra Dec 16, 2023
f99fc76
fix statements
aumetra Dec 19, 2023
452b73d
format and continue refactor
aumetra Jan 19, 2024
22dd2c4
add formatter
aumetra Jan 20, 2024
b3a1c5d
finish formatting
aumetra Jan 21, 2024
d6ae181
maintain names as constants
aumetra Jan 21, 2024
f5e26ea
structure
aumetra Jan 21, 2024
284d390
add activitypub table for accounts, link accounts and users via a pkf…
aumetra Jan 21, 2024
194e264
move cryptographic keys out
aumetra Jan 21, 2024
70943b9
rename to account_type
aumetra Jan 21, 2024
224ae91
remove keys from accounts table
aumetra Jan 21, 2024
0b5f5f3
add shutdown log
aumetra Jan 21, 2024
5dbf813
update benchmark
aumetra Jan 21, 2024
45081d9
rename constraints, move queries around
aumetra Jan 21, 2024
a7388b0
update schema
aumetra Mar 9, 2024
8baef20
add diesel-cli-ext to the flake
aumetra Jun 1, 2024
3144db6
remove blurhash
aumetra Jun 1, 2024
df95bf9
refactor unique constraint positions
aumetra Jun 2, 2024
550db4a
store keys in der format
aumetra Jun 2, 2024
8cfb169
add comment
aumetra Jun 2, 2024
ecb04f7
add domain table
aumetra Jun 4, 2024
5955566
add fk constraint
aumetra Jun 4, 2024
a1190d4
add protocol marker
aumetra Jun 4, 2024
014ac58
make roles an own table
aumetra Jun 4, 2024
9f641df
add unique constraint
aumetra Jun 4, 2024
1e58c71
use standard conformant syntax
aumetra Jun 4, 2024
aeb1028
up
aumetra Jun 12, 2024
d694cae
Merge branch 'main' into aumetra/db-restructure
aumetra Jul 12, 2024
91b89eb
up
aumetra Jul 12, 2024
4a93801
Merge branch 'main' into aumetra/db-restructure
aumetra Nov 5, 2024
ea4c685
fix compile issue and warnings
aumetra Nov 5, 2024
d704ef3
move sensitive boolean to individual media attachments
aumetra Nov 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
maintain names as constants
  • Loading branch information
aumetra committed Jun 19, 2024
commit d6ae181308f986978cffcc6946b3ded464eb4638
9 changes: 2 additions & 7 deletions crates/kitsune-db/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,8 @@ pub async fn connect(config: &DatabaseConfig) -> Result<PgPool> {
{
let mut conn = pool.get().await?;

kitsune_language::generate_postgres_enum(&mut conn, "language_iso_code").await?;
kitsune_language::generate_regconfig_function(
&mut conn,
"iso_code_to_language",
"language_iso_code",
)
.await?;
kitsune_language::generate_postgres_enum(&mut conn).await?;
kitsune_language::generate_regconfig_function(&mut conn).await?;
}

Ok(pool)
Expand Down
8 changes: 5 additions & 3 deletions crates/kitsune-language/src/pg_enum.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ use diesel::{pg::Pg, row::NamedRow, QueryResult, QueryableByName};
use diesel_async::{AsyncConnection, RunQueryDsl};
use std::fmt::Write;

pub const ENUM_NAME: &str = "kitsune.language_iso_code";

struct CountResult {
count: i64,
}
Expand All @@ -16,12 +18,12 @@ impl QueryableByName<Pg> for CountResult {
}

/// Generate a PostgreSQL enum definition of all supported ISO language codes
pub async fn generate_postgres_enum<C>(conn: &mut C, enum_name: &str) -> QueryResult<()>
pub async fn generate_postgres_enum<C>(conn: &mut C) -> QueryResult<()>
where
C: AsyncConnection<Backend = Pg>,
{
let language_count: CountResult = diesel::sql_query(format!(
"SELECT COUNT(1) AS count FROM UNNEST(ENUM_RANGE(NULL::{enum_name}));"
"SELECT COUNT(1) AS count FROM UNNEST(ENUM_RANGE(NULL::{ENUM_NAME}));"
))
.get_result(conn)
.await?;
Expand All @@ -35,7 +37,7 @@ where
let queries = supported_languages().fold(String::new(), |mut out, lang| {
write!(
out,
"ALTER TYPE {enum_name} ADD VALUE IF NOT EXISTS '{}';",
"ALTER TYPE {ENUM_NAME} ADD VALUE IF NOT EXISTS '{}';",
lang.to_639_3()
)
.unwrap();
Expand Down
12 changes: 5 additions & 7 deletions crates/kitsune-language/src/regconfig.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
use crate::supported_languages;
use crate::{pg_enum::ENUM_NAME, supported_languages};
use diesel::{deserialize, pg::Pg, row::NamedRow, sql_types, QueryableByName};
use diesel_async::{AsyncConnection, RunQueryDsl};
use std::{collections::HashSet, fmt::Write};

const FUNCTION_NAME: &str = "kitsune.iso_code_to_language";

#[derive(Debug)]
struct PgCatalogResult {
cfgname: String,
Expand All @@ -16,11 +18,7 @@ impl QueryableByName<Pg> for PgCatalogResult {
}
}

pub async fn generate_regconfig_function<C>(
conn: &mut C,
function_name: &str,
enum_name: &str,
) -> diesel::QueryResult<()>
pub async fn generate_regconfig_function<C>(conn: &mut C) -> diesel::QueryResult<()>
where
C: AsyncConnection<Backend = Pg>,
{
Expand All @@ -36,7 +34,7 @@ where

let mut function = format!(
r#"
CREATE OR REPLACE FUNCTION {function_name} ({enum_name})
CREATE OR REPLACE FUNCTION {FUNCTION_NAME} ({ENUM_NAME})
RETURNS regconfig
AS $$
SELECT CASE $1
Expand Down