feat(database): add indexes for content provider and images
This commit is contained in:
parent
abf695ff1c
commit
cfcf954a4c
@ -0,0 +1,36 @@
|
||||
package db.migration;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.Statement;
|
||||
import javax.sql.DataSource;
|
||||
import org.flywaydb.core.api.configuration.Configuration;
|
||||
import org.flywaydb.core.api.migration.BaseJavaMigration;
|
||||
import org.flywaydb.core.api.migration.Context;
|
||||
|
||||
public class V0017__AddIndexImagesObjectKey extends BaseJavaMigration {
|
||||
|
||||
@Override
|
||||
public void migrate(Context context) throws Exception {
|
||||
Configuration config = context.getConfiguration();
|
||||
|
||||
try (Connection conn = getFreshConnection(config);
|
||||
Statement stmt = conn.createStatement()) {
|
||||
stmt.execute(
|
||||
"CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_images_object_key ON images(object_key)");
|
||||
}
|
||||
}
|
||||
|
||||
private Connection getFreshConnection(Configuration config) throws Exception {
|
||||
DataSource dataSource = config.getDataSource();
|
||||
if (dataSource != null) {
|
||||
return dataSource.getConnection();
|
||||
}
|
||||
return DriverManager.getConnection(config.getUrl(), config.getUser(), config.getPassword());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canExecuteInTransaction() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -1,3 +1,9 @@
|
||||
CREATE INDEX IF NOT EXISTS idx_manga_ingest_reviews_provider ON manga_ingest_reviews(content_provider_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_manga_content_provider_provider ON manga_content_provider(content_provider_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_manga_content_images_image ON manga_content_images(image_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_mangas_cover_image ON mangas(cover_image_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_content_providers_name ON content_providers(name);
|
||||
|
||||
DELETE FROM manga_ingest_reviews
|
||||
WHERE content_provider_id = (SELECT id FROM content_providers WHERE name = 'Taimu');
|
||||
|
||||
@ -5,5 +11,5 @@ DELETE FROM manga_content_provider
|
||||
WHERE content_provider_id = (SELECT id FROM content_providers WHERE name = 'Taimu');
|
||||
|
||||
DELETE FROM images
|
||||
WHERE id NOT IN (SELECT DISTINCT image_id FROM manga_content_images WHERE image_id IS NOT NULL)
|
||||
AND id NOT IN (SELECT DISTINCT cover_image_id FROM mangas WHERE cover_image_id IS NOT NULL);
|
||||
WHERE NOT EXISTS (SELECT 1 FROM manga_content_images WHERE image_id = images.id)
|
||||
AND NOT EXISTS (SELECT 1 FROM mangas WHERE cover_image_id = images.id);
|
||||
|
||||
@ -1 +0,0 @@
|
||||
CREATE INDEX IF NOT EXISTS idx_images_object_key ON images(object_key);
|
||||
Loading…
x
Reference in New Issue
Block a user