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

    Variable productFeeRuleTableConst

    productFeeRuleTable: Omit<
        PgTableWithColumns<
            {
                columns: {
                    createdAt: PgColumn<
                        {
                            baseColumn: never;
                            columnType: "PgCustomColumn";
                            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_fee_rule";
                        },
                        {},
                        { pgColumnBuilderBrand: "PgCustomColumnBuilderBrand" },
                    >;
                    currentVersionId: PgColumn<
                        {
                            baseColumn: never;
                            columnType: "PgInteger";
                            data: number;
                            dataType: "number";
                            driverParam: string
                            | number;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: false;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: "currentVersionId";
                            notNull: true;
                            tableName: "product_fee_rule";
                        },
                        {},
                        {},
                    >;
                    customerId: PgColumn<
                        {
                            baseColumn: never;
                            columnType: "PgInteger";
                            data: number;
                            dataType: "number";
                            driverParam: string
                            | number;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: false;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: "customerId";
                            notNull: false;
                            tableName: "product_fee_rule";
                        },
                        {},
                        {},
                    >;
                    deletedAt: PgColumn<
                        {
                            baseColumn: never;
                            columnType: "PgCustomColumn";
                            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_fee_rule";
                        },
                        {},
                        { pgColumnBuilderBrand: "PgCustomColumnBuilderBrand" },
                    >;
                    externalId: PgColumn<
                        {
                            baseColumn: never;
                            columnType: "PgText";
                            data: string;
                            dataType: "string";
                            driverParam: string;
                            enumValues: [string, ...string[]];
                            generated: undefined;
                            hasDefault: true;
                            hasRuntimeDefault: true;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: "externalId";
                            notNull: true;
                            tableName: "product_fee_rule";
                        },
                        {},
                        {},
                    >;
                    id: PgColumn<
                        {
                            baseColumn: never;
                            columnType: "PgInteger";
                            data: number;
                            dataType: "number";
                            driverParam: string
                            | number;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: true;
                            hasRuntimeDefault: false;
                            identity: "byDefault";
                            isAutoincrement: false;
                            isPrimaryKey: true;
                            name: "id";
                            notNull: true;
                            tableName: "product_fee_rule";
                        },
                        {},
                        {},
                    >;
                    matcherHash: PgColumn<
                        {
                            baseColumn: never;
                            columnType: "PgText";
                            data: string;
                            dataType: "string";
                            driverParam: string;
                            enumValues: [string, ...string[]];
                            generated: undefined;
                            hasDefault: false;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: "matcherHash";
                            notNull: true;
                            tableName: "product_fee_rule";
                        },
                        {},
                        {},
                    >;
                    routeId: PgColumn<
                        {
                            baseColumn: never;
                            columnType: "PgInteger";
                            data: number;
                            dataType: "number";
                            driverParam: string
                            | number;
                            enumValues: undefined;
                            generated: undefined;
                            hasDefault: false;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: "routeId";
                            notNull: true;
                            tableName: "product_fee_rule";
                        },
                        {},
                        {},
                    >;
                    type: PgColumn<
                        {
                            baseColumn: never;
                            columnType: "PgText";
                            data: "CUSTOMER"
                            | "ADMIN";
                            dataType: "string";
                            driverParam: string;
                            enumValues: [string, ...string[]];
                            generated: undefined;
                            hasDefault: false;
                            hasRuntimeDefault: false;
                            identity: undefined;
                            isAutoincrement: false;
                            isPrimaryKey: false;
                            name: "type";
                            notNull: true;
                            tableName: "product_fee_rule";
                        },
                        {},
                        { $type: "CUSTOMER"
                        | "ADMIN" },
                    >;
                    updatedAt: PgColumn<
                        {
                            baseColumn: never;
                            columnType: "PgCustomColumn";
                            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_fee_rule";
                        },
                        {},
                        { pgColumnBuilderBrand: "PgCustomColumnBuilderBrand" },
                    >;
                };
                dialect: "pg";
                name: "product_fee_rule";
                schema: "b2b";
            },
        >,
        "enableRLS",
    > = ...

    Per-route fee 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, fee values, or label/description inserts a new product_fee_rule_version row and re-points currentVersionId (and re-stamps matcherHash) in the same transaction.

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