Skip to content

Commit fbf81dc

Browse files
committed
Support subsetted database cloning
1 parent bfba15b commit fbf81dc

File tree

4 files changed

+162
-63
lines changed

4 files changed

+162
-63
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package org.labkey.api.data;
2+
3+
import org.jetbrains.annotations.Nullable;
4+
5+
import java.util.function.Predicate;
6+
7+
public interface DatabaseMigrationConfiguration
8+
{
9+
boolean shouldInsertData();
10+
DbScope getSourceScope();
11+
DbScope getTargetScope();
12+
DbScope getMetadataScope();
13+
Predicate<String> getColumnNameFilter();
14+
15+
class DefaultDatabaseMigrationConfiguration implements DatabaseMigrationConfiguration
16+
{
17+
@Override
18+
public boolean shouldInsertData()
19+
{
20+
return true;
21+
}
22+
23+
@Override
24+
public @Nullable DbScope getSourceScope()
25+
{
26+
return null;
27+
}
28+
29+
@Override
30+
public DbScope getTargetScope()
31+
{
32+
return null;
33+
}
34+
35+
@Override
36+
public DbScope getMetadataScope()
37+
{
38+
return null;
39+
}
40+
41+
@Override
42+
public Predicate<String> getColumnNameFilter()
43+
{
44+
return null;
45+
}
46+
}
47+
}

api/src/org/labkey/api/data/DatabaseMigrationService.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import org.apache.logging.log4j.Logger;
44
import org.jetbrains.annotations.NotNull;
5-
import org.jetbrains.annotations.Nullable;
5+
import org.labkey.api.data.DatabaseMigrationConfiguration.DefaultDatabaseMigrationConfiguration;
66
import org.labkey.api.query.TableSorter;
77
import org.labkey.api.services.ServiceRegistry;
88
import org.labkey.api.util.logging.LogHelper;
@@ -29,8 +29,13 @@ static void setInstance(DatabaseMigrationService impl)
2929
ServiceRegistry.get().registerService(DatabaseMigrationService.class, impl);
3030
}
3131

32+
default DatabaseMigrationConfiguration getDatabaseMigrationConfiguration(String migration)
33+
{
34+
return new DefaultDatabaseMigrationConfiguration();
35+
}
36+
3237
// By default, no-op implementation that simply logs
33-
default void migrate(boolean shouldInsertData, @Nullable String migrationDataSource)
38+
default void migrate(DatabaseMigrationConfiguration configuration)
3439
{
3540
LOG.warn("Database migration service is not present; database migration is a premium feature.");
3641
}

0 commit comments

Comments
 (0)