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
|
DELETE FROM manga_ingest_reviews
|
||||||
WHERE content_provider_id = (SELECT id FROM content_providers WHERE name = 'Taimu');
|
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');
|
WHERE content_provider_id = (SELECT id FROM content_providers WHERE name = 'Taimu');
|
||||||
|
|
||||||
DELETE FROM images
|
DELETE FROM images
|
||||||
WHERE id NOT IN (SELECT DISTINCT image_id FROM manga_content_images WHERE image_id IS NOT NULL)
|
WHERE NOT EXISTS (SELECT 1 FROM manga_content_images WHERE image_id = images.id)
|
||||||
AND id NOT IN (SELECT DISTINCT cover_image_id FROM mangas WHERE cover_image_id IS NOT NULL);
|
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