[jOOQ/jOOQ#12425] Move UNIQUE predicate to API generator

This commit is contained in:
Lukas Eder 2021-09-16 11:26:19 +02:00
parent 6b42ede21e
commit 404eec8004
2 changed files with 69 additions and 40 deletions

View File

@ -14547,28 +14547,6 @@ public class DSL {
return not(exists(query));
}
/**
* Create a unique condition.
* <p>
* <code>UNIQUE ([query])</code>
*/
@NotNull
@Support
public static Condition unique(Select<?> query) {
return new UniqueCondition(query);
}
/**
* Create a not unique condition.
* <p>
* <code>NOT UNIQUE ([query])</code>
*/
@NotNull
@Support
public static Condition notUnique(Select<?> query) {
return not(unique(query));
}
/**
* Invert a boolean value.
* <p>
@ -15687,6 +15665,24 @@ public class DSL {
return new Not(arg1);
}
/**
* The <code>UNIQUE</code> function.
*/
@NotNull
@Support
public static Condition unique(Select<?> query) {
return new Unique(query);
}
/**
* The <code>NOT UNIQUE</code> function.
*/
@NotNull
@Support
public static Condition notUnique(Select<?> query) {
return not(unique(query));
}
// -------------------------------------------------------------------------
// Numeric functions
// -------------------------------------------------------------------------

View File

@ -35,36 +35,52 @@
*
*
*/
package org.jooq.impl;
import static org.jooq.impl.DSL.count;
import static org.jooq.impl.DSL.exists;
import static org.jooq.impl.DSL.notExists;
import static org.jooq.impl.DSL.one;
import static org.jooq.impl.DSL.row;
import static org.jooq.impl.DSL.select;
import static org.jooq.impl.Keywords.K_NOT;
import static org.jooq.impl.Keywords.K_UNIQUE;
import static org.jooq.impl.Tools.visitSubquery;
import static org.jooq.impl.DSL.*;
import static org.jooq.impl.Internal.*;
import static org.jooq.impl.Keywords.*;
import static org.jooq.impl.Names.*;
import static org.jooq.impl.SQLDataType.*;
import static org.jooq.impl.Tools.*;
import static org.jooq.impl.Tools.BooleanDataKey.*;
import static org.jooq.impl.Tools.DataExtendedKey.*;
import static org.jooq.impl.Tools.DataKey.*;
import static org.jooq.SQLDialect.*;
import org.jooq.*;
import org.jooq.Record;
import org.jooq.conf.*;
import org.jooq.impl.*;
import org.jooq.tools.*;
import java.util.*;
import org.jooq.Condition;
import org.jooq.Context;
import org.jooq.Field;
import org.jooq.Select;
import org.jooq.Table;
/**
* @author Knut Wannheden
* The <code>UNIQUE</code> statement.
*/
final class UniqueCondition extends AbstractCondition {
@SuppressWarnings({ "rawtypes", "unused" })
final class Unique
extends
AbstractCondition
{
private final Select<?> query;
UniqueCondition(Select<?> query) {
Unique(
Select<?> query
) {
this.query = query;
}
// -------------------------------------------------------------------------
// XXX: QueryPart API
// -------------------------------------------------------------------------
@Override
final boolean isNullable() {
return false;
@ -92,4 +108,21 @@ final class UniqueCondition extends AbstractCondition {
break;
}
}
// -------------------------------------------------------------------------
// The Object API
// -------------------------------------------------------------------------
@Override
public boolean equals(Object that) {
if (that instanceof Unique) {
return
StringUtils.equals(query, ((Unique) that).query)
;
}
else
return super.equals(that);
}
}