[jOOQ/jOOQ#10913] Add Database.getPrimaryKeys() and overloads to

jOOQ-meta
This commit is contained in:
Lukas Eder 2020-11-11 13:25:49 +01:00
parent c29e75cf0b
commit 9afae0df97
2 changed files with 38 additions and 1 deletions

View File

@ -208,6 +208,7 @@ public abstract class AbstractDatabase implements Database {
private List<SequenceDefinition> sequences;
private List<IdentityDefinition> identities;
private List<IndexDefinition> indexes;
private List<UniqueKeyDefinition> primaryKeys;
private List<UniqueKeyDefinition> uniqueKeys;
private List<UniqueKeyDefinition> keys;
private List<ForeignKeyDefinition> foreignKeys;
@ -226,6 +227,7 @@ public abstract class AbstractDatabase implements Database {
private transient Map<SchemaDefinition, List<IdentityDefinition>> identitiesBySchema;
private transient Map<SchemaDefinition, List<IndexDefinition>> indexesBySchema;
private transient Map<TableDefinition, List<IndexDefinition>> indexesByTable;
private transient Map<SchemaDefinition, List<UniqueKeyDefinition>> primaryKeysBySchema;
private transient Map<SchemaDefinition, List<UniqueKeyDefinition>> uniqueKeysBySchema;
private transient Map<SchemaDefinition, List<UniqueKeyDefinition>> keysBySchema;
private transient Map<SchemaDefinition, List<ForeignKeyDefinition>> foreignKeysBySchema;
@ -1609,7 +1611,7 @@ public abstract class AbstractDatabase implements Database {
if (uniqueKeys == null) {
uniqueKeys = new ArrayList<>();
if (getIncludeUniqueKeys() || getIncludePrimaryKeys())
if (getIncludeUniqueKeys())
for (SchemaDefinition s : getSchemata())
for (TableDefinition table : getTables(s))
for (UniqueKeyDefinition uniqueKey : table.getUniqueKeys())
@ -1621,6 +1623,31 @@ public abstract class AbstractDatabase implements Database {
return uniqueKeys;
}
@Override
public final List<UniqueKeyDefinition> getPrimaryKeys(SchemaDefinition schema) {
if (primaryKeysBySchema == null)
primaryKeysBySchema = new LinkedHashMap<>();
return filterSchema(getPrimaryKeys(), schema, primaryKeysBySchema);
}
@Override
public final List<UniqueKeyDefinition> getPrimaryKeys() {
if (primaryKeys == null) {
primaryKeys = new ArrayList<>();
if (getIncludePrimaryKeys())
for (SchemaDefinition s : getSchemata())
for (TableDefinition table : getTables(s))
if (table.getPrimaryKey() != null)
primaryKeys.add(table.getPrimaryKey());
sort(primaryKeys);
}
return primaryKeys;
}
@Override
public final List<UniqueKeyDefinition> getUniqueKeys(SchemaDefinition schema) {
if (uniqueKeysBySchema == null)

View File

@ -134,6 +134,16 @@ public interface Database extends AutoCloseable {
*/
List<UniqueKeyDefinition> getUniqueKeys(SchemaDefinition schema);
/**
* The primary keys contained in this database.
*/
List<UniqueKeyDefinition> getPrimaryKeys();
/**
* The primary keys contained in this database.
*/
List<UniqueKeyDefinition> getPrimaryKeys(SchemaDefinition schema);
/**
* The unique and primary keys contained in this database.
*/