orm/src/schema/types/Number.js

/**
 * @module flitter-orm/src/schema/types/Number
 */

const Type = require('../Type')

/**
 * Schema type representing a standard number type.
 * @extends {module:flitter-orm/src/schema/Type~Type}
 */
class NumberType extends Type {
    /**
     * Determines whether the specified value can be cast to a number.
     * @param {*} value
     * @returns {boolean}
     */
    static validate(value) {
        try {
            const num = Number(value)
            return !isNaN(num)
        } catch (e) {
            return false
        }
    }

    /**
     * Casts the specified value to a number.
     * @param {*} value
     * @returns {number}
     */
    static cast(value) {
        return Number(value)
    }
}

module.exports = exports = NumberType