Socket
Socket
Sign inDemoInstall

lambdaorm-cli

Package Overview
Dependencies
401
Maintainers
1
Versions
117
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    lambdaorm-cli

The lambdaorm command line interface


Version published
Weekly downloads
18
decreased by-88.89%
Maintainers
1
Created
Weekly downloads
 

Changelog

Source

1.2.0 (2024-04-18)

Features:

  • add fetch, match, incorporate and introspect commands (900ce02), closes #0
  • add introspect and incorporate (a6147ee), closes #0

Readme

Source

λORM CLI

λORM CLI is a command line application to use λORM

Installation

Install the package globally to use the CLI commands to help you create and maintain projects

npm install lambdaorm-cli -g

CLI

CommandDescription
versionPrints lambdaorm version this project uses.
initGenerates lambdaorm project structure.
syncSynchronize database.
executeExecute an expression lambda.
metadataReturn metadata of query expression.
parametersReturn parameters of query expression.
modelReturn model of query expression.
planReturn plan execution of query expression.
schemaReturn schema information.
importImport data from file to database.
exportExport data from a database.
buildadd configuration, model and repositories according to the language.
dropRemoves all database objects but not the database.

Usage

version

Prints lambdaorm version this project uses.

lambdaorm version

Result:

Global lambdaorm cli version: 0.9.21
Local lambdaorm version: 0.8.96

init

will create the project folder with the basic structure.

lambdaorm init -w lab

It will generate:

├── data
└── lambdaORM.yaml

init client node

will create the project folder with the basic structure.

lambdaorm init -w client-lab -u http://localhost:9291

It will generate:

├── data
└── lambdaORM.yaml

sync

Synchronize Stage configured in lambdaORM schema with database/s.

lambdaorm sync

In the case the default stage is associated with several data sources, it generates a file for each data source and a file with the current model.

data
├── default-ddl-20231201T191054280Z-sync-Catalog.sql
├── default-ddl-20231201T191054280Z-sync-Crm.sql
├── default-ddl-20231201T191054281Z-sync-Ordering.json
├── default-model.json

execute

Execute an expression lambda.

lambdaorm execute -e .env -q "Orders.filter(p => p.customerId == customerId).include(p => [p.customer.map(p => p.name), p.details.include(p => p.product.include(p => p.category.map(p => p.name)).map(p => p.name)).map(p => [p.quantity, p.unitPrice])]).page(1,1)" -d "{\"customerId\": \"HANAR\"}"

Result:

[
  {
    "id": 3,
    "customerId": "HANAR",
    "employeeId": 4,
    "orderDate": "1996-07-08T00:00:00.000+02:00",
    "requiredDate": "1996-08-05",
    "shippedDate": "1996-07-12",
    "shipViaId": 2,
    "freight": 65.83,
    "name": "Hanari Carnes",
    "address": "Rua do Pao, 67",
    "city": "Rio de Janeiro",
    "region": "RJ",
    "postalCode": "05454-876",
    "country": "Brazil",
    "details": [
      {
        "quantity": 10,
        "unitPrice": 7.7,
        "product": {
          "name": "Jack's New England Clam Chowder",
          "category": {
            "name": "Seafood"
          }
        }
      },
      {
        "quantity": 35,
        "unitPrice": 42.4,
        "product": {
          "name": "Manjimup Dried Apples",
          "category": {
            "name": "Produce"
          }
        }
      },
      {
        "quantity": 15,
        "unitPrice": 16.8,
        "product": {
          "name": "Louisiana Fiery Hot Pepper Sauce",
          "category": {
            "name": "Condiments"
          }
        }
      }
    ],
    "customer": {
      "name": "Hanari Carnes"
    }
  }
]

In this example:

  • The .env file is used to obtain the environment variables.
  • The lambda expression is used to obtain an order from the "HANAR" client.

Plan

Return plan execution of query expression.

lambdaorm plan -e .env -s default -q "Orders.filter(p => p.customerId == customerId).include(p => p.customer.map(p => p.name)).order(p=> p.id).page(1,1)" -o beautiful

Result:

{
  "entity": "Orders",
  "dialect": "MongoDB",
  "source": "Ordering",
  "sentence": "[{ \"$match\" : { \"CustomerID\":{{customerId}} } }, { \"$project\" :{ \"_id\": 0 , \"id\":\"$_id\", \"customerId\":\"$CustomerID\", \"orderDate\":\"$OrderDate\", \"__customerId\":\"$CustomerID\" }} , { \"$sort\" :{ \"_id\":1 } } , { \"$skip\" : 0 }, { \"$limit\" : 1 } , { \"$project\": { \"_id\": 0 } }]",
  "children": [
    {
      "entity": "Customers",
      "dialect": "PostgreSQL",
      "source": "Crm",
      "sentence": "SELECT c.CompanyName AS \"name\", c.CustomerID AS \"LambdaOrmParentId\" FROM Customers c  WHERE  c.CustomerID IN ($1) "
    }
  ]
}

In this example:

  • The .env file is used to obtain the environment variables.
  • The Plan obtained is about the stage default.
  • The lambda expression is used to obtain an order from the "HANAR" client.
  • The plan is obtained in a beautiful format.

import

Import data from file to datasources asociados a un stage.


```sh
lambdaorm import -e .env -s default -d ./data.json

In this example:

  • The datasources associated with the default stage are known.
  • The .env file is used to obtain environment variables.
  • Data is obtained from data.json file

export

Export data from a datasource associated to a stage.

lambdaorm export  -s stage1 -e .env 

In this example:

  • Data is exported from the datasources associated with stage1.
  • The .env file is used to obtain the environment variables.
  • A file called "stage1-export.json" will be created with all the data associated with the stage1 datasources.

Build

Running the build command will create or update the following:

  • Folder that will contain the source code and is taken from the "infrastructure.paths.scr" configuration in the lambdaorm.yaml file
  • Folder that will contain the domain files, the path is relative to the src folder and is taken from the "infrastructure.paths.domain" configuration in the lambdaorm.yaml file
  • Model file: file with the definition of the entities
  • Repository files: one file for each entity with data access methods
  • Install the necessary dependencies according to the databases used
Build Node example

Add configuration, model and repositories according to the language.

lambdaorm build -l node

Result:

├── data
├── lambdaORM.yaml
├── package.json
├── src
│   └── countries
│       └── domain
│           ├── model.ts
│           ├── repositoryCountry.ts
│           └── repositoryState.ts
└── tsconfig.json
Build Client Node example
lambdaorm build -l client-node --all -u http://localhost:9291

Result:

├── data
├── lambdaORM.yaml
├── package.json
├── src
│   ├── index.ts
│   └── northwind
│       └── domain
│           ├── model.ts
│           ├── repositoryCategory.ts
│           ├── repositoryCustomer.ts
│           ├── repositoryOrdersDetail.ts
│           ├── repositoryOrder.ts
│           └── repositoryProduct.ts
└── tsconfig.json

Drop

Removes all database objects but not the database.

lambdaorm drop -e .env -s default
lambdaorm drop -e .env -s insights

Result:

data
├── default-ddl-20231129T110712162Z-sync-Catalog.sql
├── default-ddl-20231129T110712163Z-sync-Crm.sql
├── default-ddl-20231129T110712163Z-sync-Ordering.json
├── default-ddl-20231129T111730593Z-clean-Catalog.sql
├── default-ddl-20231129T111730594Z-clean-Crm.sql
├── default-ddl-20231129T111730594Z-clean-Ordering.json
├── insights-ddl-20231129T110303423Z-sync-Insights.sql
└── insights-ddl-20231129T111738316Z-clean-Insights.sql

In this example:

  • The .env file is used to obtain the environment variables.
  • The first execution drops all the database objects associated with the default datasources.
  • The second execution drops all the database objects associated with the insights data sources.
  • The clean files associated with each datasource of each stage are generated.
  • The model file associated with each stage is removed.

Documentation

Full documentation is available in the Wiki.

Labs

You can access various labs at github.com/lambda-orm/lambdaorm-labs

Keywords

FAQs

Last updated on 18 Apr 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc