com.palantir.atlasdb.table.description.constraints.ForeignKeyConstraint Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of atlasdb-client Show documentation
Show all versions of atlasdb-client Show documentation
Palantir open source project
/*
* (c) Copyright 2018 Palantir Technologies Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.palantir.atlasdb.table.description.constraints;
/**
* To implement this interface, you must implement a method "public static List<$SOMETUPLE$> getKeys(...)"
*
* For named tables, the parameters should match the list of rows/columns passed in the AtlasDb schema.
* Row variables should come before column variables in the method signature.
*
* If I add a foreign constraints like: .addForeignConstraint(ForeignConstraintMetadata
* .builder("SomeTableName", SomeConstraint.class)
* .addRowVariables("realm_id")
* .addColumnVariables("data_event")),
*
* then the method signature should look like:
* public static List<$SOMETUPLE$> getKeys(long realmId, DataHistoryEvent dataEvent).
*
* The size of $SOMETUPLE$ should be equal to the number of fields in the key of "SomeTableName",
* and the types should match accordingly.
*
* Dynamic tables work similarly, except column parameters and values are given as Lists. If you want the
* value of a column to be passed in, use TableRenderer.DYNAMIC_COLUMN_VALUE_VARIABLE.
* Row variables should come before column variables in the method signature.
*
* If I add a rowConstraint like: .addRowConstraint(RowConstraintMetadata.builder(SomeConstraint.class)
* .addRowVariables("realm_id")
* .addColumnVariables("data_event_id",
* TableRenderer.DYNAMIC_COLUMN_VALUE_VARIABLE)),
* then the method signature should look like: public static List<$SOMETUPLE$> getKeys(
* long realmId, List<Long> dataEventIds, List<LinkChangeSet> linkChangeSets).
* The size of $SOMETUPLE$ should be equal to the number of fields in the key of "SomeTableName",
* and the types should match accordingly.
*/
public interface ForeignKeyConstraint {
/* Marker interface */
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy