001package io.ebean.config.dbplatform;
002
003import java.sql.Types;
004
005/**
006 * The known DB types that are mapped.
007 * <p>
008 * This includes extra types such as UUID, JSON, JSONB and HSTORE.
009 * </p>
010 */
011public enum DbType {
012
013  BOOLEAN(Types.BOOLEAN),
014  BIT(Types.BIT),
015  INTEGER(Types.INTEGER),
016  BIGINT(Types.BIGINT),
017  SMALLINT(Types.SMALLINT),
018  TINYINT(Types.TINYINT),
019  REAL(Types.REAL),
020  //FLOAT(Types.FLOAT),
021  DOUBLE(Types.DOUBLE),
022  DECIMAL(Types.DECIMAL),
023  VARCHAR(Types.VARCHAR),
024  CHAR(Types.CHAR),
025  BLOB(Types.BLOB),
026  CLOB(Types.CLOB),
027  LONGVARBINARY(Types.LONGVARBINARY),
028  LONGVARCHAR(Types.LONGVARCHAR),
029  VARBINARY(Types.VARBINARY),
030  BINARY(Types.BINARY),
031  DATE(Types.DATE),
032  TIME(Types.TIME),
033  TIMESTAMP(Types.TIMESTAMP),
034
035  ARRAY(Types.ARRAY),
036
037  LOCALDATETIME(ExtraDbTypes.LOCALDATETIME),
038  UUID(ExtraDbTypes.UUID),
039  INET(ExtraDbTypes.INET),
040  CIDR(ExtraDbTypes.CIDR),
041
042  POINT(ExtraDbTypes.POINT),
043  POLYGON(ExtraDbTypes.POLYGON),
044  LINESTRING(ExtraDbTypes.LINESTRING),
045  MULTIPOINT(ExtraDbTypes.MULTIPOINT),
046  MULTILINESTRING(ExtraDbTypes.MULTILINESTRING),
047  MULTIPOLYGON(ExtraDbTypes.MULTIPOLYGON),
048
049  HSTORE(ExtraDbTypes.HSTORE),
050  JSON(ExtraDbTypes.JSON),
051  JSONB(ExtraDbTypes.JSONB),
052  JSONCLOB(ExtraDbTypes.JSONClob),
053  JSONBLOB(ExtraDbTypes.JSONBlob),
054  JSONVARCHAR(ExtraDbTypes.JSONVarchar);
055
056  private final int id;
057
058  DbType(int id) {
059    this.id = id;
060  }
061
062  /**
063   * Return the JDBC java.sql.Types value.
064   */
065  public int id() {
066    return id;
067  }
068
069  /**
070   * Create a platform type without scale or precision.
071   */
072  public DbPlatformType createPlatformType() {
073    return new DbPlatformType(name().toLowerCase());
074  }
075}