All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.ouestfrance.querydsl.postgrest.model.Prefer Maven / Gradle / Ivy

package fr.ouestfrance.querydsl.postgrest.model;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;

/**
 * PostgREST honors the Prefer HTTP header specified on RFC 7240.
 * It allows clients to specify required and optional behaviors for their requests.
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class Prefer {

    /**
     * Prefer Header key
     */
    public static final String HEADER = "Prefer";


    /**
     * Return Representation
     * The return preference can be used to obtain information about affected resource when it’s inserted, updated or deleted.
     * This helps avoid a subsequent GET request.
     */
    @NoArgsConstructor(access = AccessLevel.PRIVATE)
    public static class Return {
        /**
         * With Prefer: return=minimal, no response body will be returned. This is the default mode for all write requests.
         */
        public static final String MINIMAL = "return=minimal";
        /**
         * Headers Only
         * If the table has a primary key, the response can contain a Location header describing where to find the new object
         * by including the header Prefer: return=headers-only in the request.
         * Make sure that the table is not write-only,
         * otherwise constructing the Location header will cause a permission error.
         */
        public static final String HEADERS_ONLY = "return=headers-only";
        /**
         * On the other end of the spectrum you can get the full created object back in the response to your request
         * by including the header Prefer: return=representation.
         * That way you won’t have to make another HTTP call to discover properties that may have been filled in on the server side
         */
        public static final String REPRESENTATION = "return=representation";

    }


    /**
     * Any missing columns in the payload will be inserted as null values
     * To use the DEFAULT column value instead, use the Prefer: missing=default header.
     */
    @NoArgsConstructor(access = AccessLevel.PRIVATE)
    public static class Missing {

        /**
         * To use the DEFAULT column value instead of null, use the Prefer: missing=default header.
         */
        public static final String REPRESENTATION = "missing=default";
    }

    /**
     * Upsert resolution
     * You can make an upsert with POST and the Prefer: resolution=merge-duplicates header:
     * By default, upsert operates based on the primary key columns, you must specify all of them
     */
    @NoArgsConstructor(access = AccessLevel.PRIVATE)
    public static class Resolution {

        /**
         *  You can make an upsert with POST and the Prefer: resolution=merge-duplicates header
         */
        public static final String MERGE_DUPLICATES = "resolution=merge-duplicates";
        /**
         * You can also choose to ignore the duplicates with Prefer: resolution=ignore-duplicates
         */
        public static final String IGNORE_DUPLICATES = "resolution=ignore-duplicates";
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy