Skip to content

monolayer / schema / numeric

Function: numeric() ​

numeric(precision?, scale?): PgNumeric

Column that can store numbers with a very large number of digits.

Parameters ​

ParameterTypeDescription
precision?numberTotal count of significant digits in the whole number (number of digits to both sides of the decimal point). Must be positive.
scale?numberCount of decimal digits in the fractional part, to the right of the decimal point. Can be positive or negative.

Returns ​

PgNumeric

Remarks ​

Without any precision or scale numeric values of any length can be stored, up to the implementation limits.

In addition to ordinary numeric values, it can store several special values:

  • Infinity
  • -Infinity
  • NaN

Kysely database schema type definition

ts
{
  readonly __select__: string | null;
  readonly __insert__: bigint | number | string | null | undefined;
  readonly __update__: bigint | number | string | string | null;
};

Nullability and optionality will change according to the column's constraints, generated values, and default data values.

Zod Schema

Types:

ts
{
  input?:  bigint | number | string | null | undefined;
  output?: string | null | undefined;
}

Nullability and optionality will change according to the column's constraints, generated values, and default data values.

Validations:

  • Explicit undefined values are rejected.
  • Input value must be bigint, number, string, or null.
  • Non-null values must be either:
    • Coercible to a number.
    • NaN, Infinity, -Infinity
  • Precision and scale are enforced when specified.

Example ​

ts
import { schema, numeric, table } from "monolayer/pg";
import { zodSchema } from "monolayer/zod";

const dbSchema = schema({
  tables: {
    example: table({
      columns: {
        amount: numeric(),
      },
    }),
  },
});

// Kysely database schema type
type DB = typeof dbSchema.infer;
// Zod Schema
const schema = zodSchema(database.tables.example);

See ​

numeric (PostgreSQL Docs)