@cfxlabsinc/b2b-services
    Preparing search index...

    Variable productLimitRuleTableConst

    productLimitRuleTable: Omit<
        PgTableWithColumns<
            {
                columns: {
                    createdAt: PgBuildColumn<
                        "product_limit_rule",
                        SetHasDefault<
                            SetNotNull<
                                PgCustomColumnBuilder<
                                    { data: Instant; dataType: "custom"; driverParam: string },
                                >,
                            >,
                        >,
                        {
                            data: Instant;
                            dataType: "custom";
                            driverParam: string;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: true;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: string;
                            notNull: true;
                            tableName: "product_limit_rule";
                        },
                    >;
                    currentVersionId: PgBuildColumn<
                        "product_limit_rule",
                        SetNotNull<PgIntegerBuilder>,
                        {
                            data: number;
                            dataType: "number int32";
                            driverParam: string | number;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: false;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: string;
                            notNull: true;
                            tableName: "product_limit_rule";
                        },
                    >;
                    customerId: PgBuildColumn<
                        "product_limit_rule",
                        PgIntegerBuilder,
                        {
                            data: number;
                            dataType: "number int32";
                            driverParam: string
                            | number;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: false;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: string;
                            notNull: false;
                            tableName: "product_limit_rule";
                        },
                    >;
                    deletedAt: PgBuildColumn<
                        "product_limit_rule",
                        PgCustomColumnBuilder<
                            { data: Instant; dataType: "custom"; driverParam: string },
                        >,
                        {
                            data: Instant;
                            dataType: "custom";
                            driverParam: string;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: false;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: string;
                            notNull: false;
                            tableName: "product_limit_rule";
                        },
                    >;
                    externalId: PgBuildColumn<
                        "product_limit_rule",
                        SetHasRuntimeDefault<SetNotNull<PgTextBuilder<[string, ...string[]]>>>,
                        {
                            data: string;
                            dataType: "string";
                            driverParam: string;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: true;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: string;
                            notNull: true;
                            tableName: "product_limit_rule";
                        },
                    >;
                    id: PgBuildColumn<
                        "product_limit_rule",
                        HasIdentity<SetIsPrimaryKey<PgIntegerBuilder>, "byDefault">,
                        {
                            data: number;
                            dataType: "number int32";
                            driverParam: string | number;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: true;
                            hasRuntimeDefault: false;
                            identity: "byDefault";
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: string;
                            notNull: true;
                            tableName: "product_limit_rule";
                        },
                    >;
                    matcherHash: PgBuildColumn<
                        "product_limit_rule",
                        SetNotNull<PgTextBuilder<[string, ...string[]]>>,
                        {
                            data: string;
                            dataType: "string";
                            driverParam: string;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: false;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: string;
                            notNull: true;
                            tableName: "product_limit_rule";
                        },
                    >;
                    routeId: PgBuildColumn<
                        "product_limit_rule",
                        SetNotNull<PgIntegerBuilder>,
                        {
                            data: number;
                            dataType: "number int32";
                            driverParam: string | number;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: false;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: string;
                            notNull: true;
                            tableName: "product_limit_rule";
                        },
                    >;
                    type: PgBuildColumn<
                        "product_limit_rule",
                        Set$Type<
                            SetNotNull<PgTextBuilder<[string, ...string[]]>>,
                            "CUSTOMER" | "ADMIN",
                        >,
                        {
                            data: "CUSTOMER" | "ADMIN";
                            dataType: "string";
                            driverParam: string;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: false;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: string;
                            notNull: true;
                            tableName: "product_limit_rule";
                        },
                    >;
                    updatedAt: PgBuildColumn<
                        "product_limit_rule",
                        SetHasDefault<
                            SetHasDefault<
                                SetNotNull<
                                    PgCustomColumnBuilder<
                                        { data: Instant; dataType: "custom"; driverParam: string },
                                    >,
                                >,
                            >,
                        >,
                        {
                            data: Instant;
                            dataType: "custom";
                            driverParam: string;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: true;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: string;
                            notNull: true;
                            tableName: "product_limit_rule";
                        },
                    >;
                };
                dialect: "pg";
                name: "product_limit_rule";
                schema: "b2b";
            },
        >,
        "enableRLS",
    > = ...

    Per-route limit rules — identity row. Tier shape mirrors product_activation_rule (see that file for the (type, customer_id) tier table).

    Mutable on currentVersionId, matcherHash, and deletedAt only. Every change to the matcher, status, priority, any limit column, or label/description inserts a new product_limit_rule_version row and re-points currentVersionId (and re-stamps matcherHash) in the same transaction.

    Duplicate-matcher detection is enforced by product_limit_rule_unique_tuple — see productActivationRuleTable for the rationale; the same denormalization pattern applies here.