-
Notifications
You must be signed in to change notification settings - Fork 1.8k
/
MissingSequenceChangeGeneratorSnowflake.java
41 lines (34 loc) · 1.6 KB
/
MissingSequenceChangeGeneratorSnowflake.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package liquibase.diff.output.changelog.core;
import liquibase.change.Change;
import liquibase.change.core.CreateSequenceChange;
import liquibase.database.Database;
import liquibase.database.core.SnowflakeDatabase;
import liquibase.diff.output.DiffOutputControl;
import liquibase.diff.output.changelog.ChangeGeneratorChain;
import liquibase.structure.DatabaseObject;
import liquibase.structure.core.Sequence;
public class MissingSequenceChangeGeneratorSnowflake extends MissingSequenceChangeGenerator{
@Override
public int getPriority(Class<? extends DatabaseObject> objectType, Database database) {
int priority = super.getPriority(objectType, database);
if ((Sequence.class.isAssignableFrom(objectType)) && (database instanceof SnowflakeDatabase)) {
priority += PRIORITY_DATABASE;
}
return priority;
}
@Override
public Change[] fixMissing(DatabaseObject missingObject, DiffOutputControl control, Database referenceDatabase, Database comparisonDatabase, ChangeGeneratorChain chain) {
Sequence sequence = (Sequence) missingObject;
CreateSequenceChange change = new CreateSequenceChange();
change.setSequenceName(sequence.getName());
if (control.getIncludeCatalog()) {
change.setCatalogName(sequence.getSchema().getCatalogName());
}
if (control.getIncludeSchema()) {
change.setSchemaName(sequence.getSchema().getName());
}
change.setStartValue(sequence.getStartValue());
change.setIncrementBy(sequence.getIncrementBy());
return new Change[] { change };
}
}