From 9afae0df9765958d57b5f37d5121e4e582a99641 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 11 Nov 2020 13:25:49 +0100 Subject: [PATCH] [jOOQ/jOOQ#10913] Add Database.getPrimaryKeys() and overloads to jOOQ-meta --- .../java/org/jooq/meta/AbstractDatabase.java | 29 ++++++++++++++++++- .../src/main/java/org/jooq/meta/Database.java | 10 +++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java index 196b093d30..0abf3a6692 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java @@ -208,6 +208,7 @@ public abstract class AbstractDatabase implements Database { private List sequences; private List identities; private List indexes; + private List primaryKeys; private List uniqueKeys; private List keys; private List foreignKeys; @@ -226,6 +227,7 @@ public abstract class AbstractDatabase implements Database { private transient Map> identitiesBySchema; private transient Map> indexesBySchema; private transient Map> indexesByTable; + private transient Map> primaryKeysBySchema; private transient Map> uniqueKeysBySchema; private transient Map> keysBySchema; private transient Map> 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 getPrimaryKeys(SchemaDefinition schema) { + if (primaryKeysBySchema == null) + primaryKeysBySchema = new LinkedHashMap<>(); + + return filterSchema(getPrimaryKeys(), schema, primaryKeysBySchema); + } + + @Override + public final List 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 getUniqueKeys(SchemaDefinition schema) { if (uniqueKeysBySchema == null) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/Database.java b/jOOQ-meta/src/main/java/org/jooq/meta/Database.java index e02686af3e..79ca417e41 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/Database.java @@ -134,6 +134,16 @@ public interface Database extends AutoCloseable { */ List getUniqueKeys(SchemaDefinition schema); + /** + * The primary keys contained in this database. + */ + List getPrimaryKeys(); + + /** + * The primary keys contained in this database. + */ + List getPrimaryKeys(SchemaDefinition schema); + /** * The unique and primary keys contained in this database. */