All files / realm/blong-gateway/meta/model gatewayBundleModel.ts

100% Statements 69/69
100% Branches 2/2
100% Functions 1/1
100% Lines 69/69

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 701x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 1x  
import {model} from '@feasibleone/blong';
 
/**
 * API bundle management model (browser).
 *
 * The bundle name is the `core_resource.resourceName` (also the wrapped
 * `access.role` resource name); the columns below (rate/credit metadata) drive
 * the auto-generated pages for `gateway.bundle`.
 */
export default model(
    () =>
        async function gatewayBundleModel() {
            return {
                subject: 'gateway',
                object: 'bundle',
                objectTitle: 'Bundle',
                public: true,
 
                schema: {
                    properties: {
                        bundle: {
                            properties: {
                                baseMonthlyCredits: {title: 'Monthly Credits'},
                                rateLimit: {title: 'Rate Limit'},
                                rateWindowSec: {title: 'Rate Window (s)'},
                                description: {title: 'Description'},
                                isActive: {title: 'Active'},
                            },
                            widget: {
                                columns: [
                                    'baseMonthlyCredits',
                                    'rateLimit',
                                    'rateWindowSec',
                                    'isActive',
                                ],
                            },
                        },
                    },
                },
 
                cards: {
                    browse: {
                        label: 'Bundles',
                        widgets: ['bundle'],
                    },
                    edit: {
                        label: 'Bundle Details',
                        widgets: [
                            'bundle.baseMonthlyCredits',
                            'bundle.rateLimit',
                            'bundle.rateWindowSec',
                            'bundle.description',
                            'bundle.isActive',
                        ],
                    },
                    detail: {
                        label: '',
                        readOnly: true,
                        watch: '$.selected.bundle',
                        widgets: [
                            '$.edit.bundle.baseMonthlyCredits',
                            '$.edit.bundle.rateLimit',
                            '$.edit.bundle.rateWindowSec',
                        ],
                    },
                },
            };
        },
);