Skip to content

Commit

Permalink
add sort indexes for qualified_purl
Browse files Browse the repository at this point in the history
  • Loading branch information
JimFuller-RedHat committed Feb 12, 2025
1 parent c999828 commit cab2b59
Show file tree
Hide file tree
Showing 2 changed files with 148 additions and 0 deletions.
2 changes: 2 additions & 0 deletions migration/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ mod m0000920_perf_indexes;
mod m0000930_alter_sbom_external_node;
mod m0000940_perf_indexes_qualified_purl;
mod m0000950_inserts_version_scheme;
mod m0000960_sort_indexes_qualified_purl;

#[cfg(feature = "ai")]
pub mod ai;
Expand Down Expand Up @@ -233,6 +234,7 @@ impl MigratorTrait for Migrator {
Box::new(m0000930_alter_sbom_external_node::Migration),
Box::new(m0000940_perf_indexes_qualified_purl::Migration),
Box::new(m0000950_inserts_version_scheme::Migration),
Box::new(m0000960_sort_indexes_qualified_purl::Migration),
]
}
}
Expand Down
146 changes: 146 additions & 0 deletions migration/src/m0000960_sort_indexes_qualified_purl.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
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> {
//drop old indexes (Note: we do not need to fallback as they are completely unused now)
manager
.drop_index(
Index::drop()
.if_exists()
.table(QualifiedPurl::Table)
.name(Indexes::QualifiedPurlNameJsonGistIdx.to_string())
.to_owned(),
)
.await?;
manager
.drop_index(
Index::drop()
.if_exists()
.table(QualifiedPurl::Table)
.name(Indexes::QualifiedPurlVersionJsonGistIdx.to_string())
.to_owned(),
)
.await?;
manager
.drop_index(
Index::drop()
.if_exists()
.table(QualifiedPurl::Table)
.name(Indexes::QualifiedPurlNamespaceJsonGistIdx.to_string())
.to_owned(),
)
.await?;
manager
.drop_index(
Index::drop()
.if_exists()
.table(QualifiedPurl::Table)
.name(Indexes::QualifiedPurlTypeJsonGistIdx.to_string())
.to_owned(),
)
.await?;

//set up sort indexes for qualified_purl
manager
.get_connection()
.execute_unprepared(
r#"
CREATE INDEX QualifiedPurlQualifierArchJsonSortIdx ON qualified_purl ((qualifiers ->> 'arch'));
CREATE INDEX QualifiedPurlQualifierDistroJsonSortIdx ON qualified_purl ((qualifiers ->> 'distro'));
CREATE INDEX QualifiedPurlPurlNamespaceJsonSortIdx ON qualified_purl ((purl ->> 'namespace'));
CREATE INDEX QualifiedPurlPurlTyJsonSortIdx ON qualified_purl ((purl ->> 'ty'));
CREATE INDEX QualifiedPurlPurlNameJsonSortIdx ON qualified_purl ((purl ->> 'name'));
CREATE INDEX QualifiedPurlPurlVersionJsonSortIdx ON qualified_purl ((purl ->> 'version'));
"#,
)
.await?;

Ok(())
}

async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
//drop index
manager
.drop_index(
Index::drop()
.if_exists()
.table(QualifiedPurl::Table)
.name(Indexes::QualifiedPurlPurlVersionJsonSortIdx.to_string())
.to_owned(),
)
.await?;
manager
.drop_index(
Index::drop()
.if_exists()
.table(QualifiedPurl::Table)
.name(Indexes::QualifiedPurlPurlNameJsonSortIdx.to_string())
.to_owned(),
)
.await?;
manager
.drop_index(
Index::drop()
.if_exists()
.table(QualifiedPurl::Table)
.name(Indexes::QualifiedPurlPurlTyJsonSortIdx.to_string())
.to_owned(),
)
.await?;
manager
.drop_index(
Index::drop()
.if_exists()
.table(QualifiedPurl::Table)
.name(Indexes::QualifiedPurlPurlNamespaceJsonSortIdx.to_string())
.to_owned(),
)
.await?;

manager
.drop_index(
Index::drop()
.if_exists()
.table(QualifiedPurl::Table)
.name(Indexes::QualifiedPurlQualifierDistroJsonSortIdx.to_string())
.to_owned(),
)
.await?;

manager
.drop_index(
Index::drop()
.if_exists()
.table(QualifiedPurl::Table)
.name(Indexes::QualifiedPurlQualifierArchJsonSortIdx.to_string())
.to_owned(),
)
.await?;

Ok(())
}
}

#[allow(clippy::enum_variant_names)]
#[derive(DeriveIden)]
enum Indexes {
QualifiedPurlQualifierArchJsonSortIdx,
QualifiedPurlQualifierDistroJsonSortIdx,
QualifiedPurlPurlNamespaceJsonSortIdx,
QualifiedPurlPurlTyJsonSortIdx,
QualifiedPurlPurlNameJsonSortIdx,
QualifiedPurlPurlVersionJsonSortIdx,
QualifiedPurlNameJsonGistIdx,
QualifiedPurlVersionJsonGistIdx,
QualifiedPurlNamespaceJsonGistIdx,
QualifiedPurlTypeJsonGistIdx,
}

#[derive(DeriveIden)]
enum QualifiedPurl {
Table,
}

0 comments on commit cab2b59

Please sign in to comment.