# db_common

- Manual
- Standard library
- Index

Search:
Group by:

Common datatypes and definitions for all `db_*.nim` ( db_mysql, db_postgres, and db_sqlite) modules.

# Types

    DbError = object of IOError

  exception that is raised if a database error occurs Source Edit

    SqlQuery = distinct string

  an SQL query string Source Edit

    DbEffect = object of IOEffect

  effect that denotes a database operation Source Edit

    ReadDbEffect = object of DbEffect

  effect that denotes a read operation Source Edit

    WriteDbEffect = object of DbEffect

  effect that denotes a write operation Source Edit

    DbTypeKind = enum
      dbUnknown,                  ## unknown datatype
      dbSerial,                   ## datatype used for primary auto-increment keys
      dbNull,                     ## datatype used for the NULL value
      dbBit,                      ## bit datatype
      dbBool,                     ## boolean datatype
      dbBlob,                     ## blob datatype
      dbFixedChar,                ## string of fixed length
      dbVarchar,                  ## string datatype
      dbJson,                     ## JSON datatype
      dbXml,                      ## XML datatype
      dbInt,                      ## some integer type
      dbUInt,                     ## some unsigned integer type
      dbDecimal,                  ## decimal numbers (fixed-point number)
      dbFloat,                    ## some floating point type
      dbDate,                     ## a year-month-day description
      dbTime,                     ## HH:MM:SS information
      dbDatetime,                 ## year-month-day and HH:MM:SS information,
                 ## plus optional time or timezone information
      dbTimestamp, ## Timestamp values are stored as the number of seconds
                  ## since the epoch ('1970-01-01 00:00:00' UTC).
      dbTimeInterval,             ## an interval [a,b] of times
      dbEnum,                     ## some enum
      dbSet,                      ## set of enum values
      dbArray,                    ## an array of values
      dbComposite,                ## composite type (record, struct, etc)
      dbUrl,                      ## a URL
      dbUuid,                     ## a UUID
      dbInet,                     ## an IP address
      dbMacAddress,               ## a MAC address
      dbGeometry,                 ## some geometric type
      dbPoint,                    ## Point on a plane   (x,y)
      dbLine,                     ## Infinite line ((x1,y1),(x2,y2))
      dbLseg,                     ## Finite line segment   ((x1,y1),(x2,y2))
      dbBox,                      ## Rectangular box   ((x1,y1),(x2,y2))
      dbPath,                     ## Closed or open path (similar to polygon) ((x1,y1),...)
      dbPolygon,                  ## Polygon (similar to closed path)   ((x1,y1),...)
      dbCircle,                   ## Circle   <(x,y),r> (center point and radius)
      dbUser1,                    ## user definable datatype 1 (for unknown extensions)
      dbUser2,                    ## user definable datatype 2 (for unknown extensions)
      dbUser3,                    ## user definable datatype 3 (for unknown extensions)
      dbUser4,                    ## user definable datatype 4 (for unknown extensions)
      dbUser5                     ## user definable datatype 5 (for unknown extensions)

  a superset of datatypes that might be supported. Source Edit

    DbType = object
      kind*: DbTypeKind            ## the kind of the described type
      notNull*: bool               ## does the type contain NULL?
      name*: string                ## the name of the type
      size*: Natural               ## the size of the datatype; 0 if of variable size
      maxReprLen*: Natural         ## maximal length required for the representation
      precision*, scale*: Natural   ## precision and scale of the number
      min*, max*: BiggestInt        ## the minimum and maximum of allowed values
      validValues*: seq[string]    ## valid values of an enum or a set

  describes a database type Source Edit

    DbColumn = object
      name*: string                ## name of the column
      tableName*: string           ## name of the table the column belongs to (optional)
      typ*: DbType                 ## type of the column
      primaryKey*: bool            ## is this a primary key?
      foreignKey*: bool            ## is this a foreign key?

  information about a database column Source Edit

    DbColumns = seq[DbColumn]

  Source Edit

# Procs

    proc dbError(msg: string) {...}{.noreturn, noinline, raises: [DbError], tags: [].}

  raises an DbError exception with message `msg`. Source Edit

# Templates

    template sql(query: string): SqlQuery

  constructs a SqlQuery from the string `query`. This is supposed to be used as a raw-string-literal modifier: `sql"update user set counter = counter + 1"`

  If assertions are turned off, it does nothing. If assertions are turned on, later versions will check the string for valid syntax.

  Source Edit