Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
node_modules/
dist/
*.js.map
*.d.ts
!src/**/*.d.ts

# OS files
.DS_Store
Thumbs.db

# IDE
.idea/
.vscode/
*.swp
*.swo

# Environment
.env
.env.local

# Build artifacts
out/
bin/
*.tgz
98 changes: 0 additions & 98 deletions Makefile

This file was deleted.

204 changes: 192 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,213 @@
# Daptin CLI

CLI for talking to [Daptin server](https://github.com/daptin/daptin)
Command-line interface for [Daptin](https://github.com/daptin/daptin) Backend-as-a-Service.

Built with TypeScript, inspired by [daptin-js-client](https://github.com/artpar/daptin-js-client).

## Installation

```bash
npm install -g daptin-cli
```

Or build from source:

```bash
git clone https://github.com/daptin/daptin-cli.git
cd daptin-cli
npm install
npm run build
npm link
```

## Quick Start

```bash
# Add a Daptin server
daptin-cli config add local http://localhost:6336

# Sign in
daptin-cli signin admin@example.com

# List all tables
daptin-cli tables

# List records from a table
daptin-cli list user_account --page-size 20

# Get a single record
daptin-cli get user_account <reference_id>
```

## Configuration

The CLI stores configuration in `~/.daptin/config.yaml`. You can manage multiple server contexts:

```bash
# Add servers
daptin-cli config add local http://localhost:6336
daptin-cli config add production https://api.example.com

# Switch active server
daptin-cli config use production

# List all servers
daptin-cli config list

# Show current context
daptin-cli config show

# Remove a server
daptin-cli config remove local
```

Override the endpoint on any command with `--endpoint`:

```bash
daptin-cli --endpoint http://localhost:6336 tables
```

## Global Options

| Flag | Description | Default |
|------|-------------|---------|
| `-e, --endpoint <url>` | Daptin server endpoint | from config |
| `-c, --config <path>` | Config file path | `~/.daptin/config.yaml` |
| `-o, --output <format>` | Output format (`table`, `json`) | `table` |
| `-t, --token <token>` | Auth token | from config |
| `--debug` | Enable debug output | `false` |

## Commands

### Authentication

```bash
go get github.com/daptin/daptin-cli
go install github.com/daptin/daptin-cli
go build -o daptin-cli
# Create a new account
daptin-cli signup user@example.com

# Sign in (prompts for password)
daptin-cli signin user@example.com

# Sign in with 2FA
daptin-cli signin-2fa user@example.com

# Show current user info
daptin-cli whoami
```

### Schema Discovery

```bash
# List all tables
daptin-cli tables
daptin-cli tables --columns table_name,is_top_level,default_permission

# Describe a table (columns, relations, actions)
daptin-cli describe user_account
daptin-cli describe product --columns ColumnName,ColumnType,DataType,IsNullable
```

### CRUD Operations

```bash
# List records
daptin-cli list product
daptin-cli list product --page-size 50 --page 2
daptin-cli list product --columns name,price,reference_id
daptin-cli list product --sort -price,name
daptin-cli list product --include category_id

# Get a single record
daptin-cli get product <reference_id>
daptin-cli get product <reference_id> --columns name,price

# Create a record
daptin-cli create product --data '{"name": "Widget", "price": 9.99}'

# Update a record
daptin-cli update product <reference_id> --data '{"price": 12.99}'

# Delete a record
daptin-cli delete product <reference_id>

# Query relationships
daptin-cli relation customer <reference_id> order_id --page-size 20
```

### Actions

Describe a table schema
```bash
./daptin-cli --output table describe table world
# List all actions
daptin-cli actions

# List actions for a specific table
daptin-cli actions user_account

# Show action schema (input/output fields)
daptin-cli action-describe user_account signin

# Execute an action
daptin-cli execute user_account generate_jwt_token --data '{"email": "user@example.com"}'

# Execute an instance-level action
daptin-cli execute order mark_shipped --id <order_reference_id> --data '{"tracking_number": "ABC123"}'
```

List items of a table
### Aggregation

./daptin-cli list --pageSize 50 --columns <col1>,<col2> <tableName>
```bash
# Count records
daptin-cli aggregate product --columns count

# Sum and average
daptin-cli aggregate product --columns "count,sum(price),avg(price)"

# Group by
daptin-cli aggregate order --columns "status,count,sum(total)" --group status

# With filters
daptin-cli aggregate product --columns "count,avg(price)" --filter "gt(price,100)"

# With limit and sort
daptin-cli aggregate order --columns "status,count" --group status --sort "-count" --limit 10
```

### Output Formats

```bash
./daptin-cli list --pageSize 50 --columns reference_id,table_name world
# Table output (default)
daptin-cli list product --output table

# JSON output
daptin-cli list product --output json

# JSON output piped to jq
daptin-cli list product -o json | jq '.[].name'
```

## Environment Variables

Get one row by reference_id
| Variable | Description |
|----------|-------------|
| `DAPTIN_CLI_CONFIG` | Path to config file |
| `DAPTIN_ENDPOINT` | Default server endpoint |

./daptin-cli get-by-id --columns reference_id,table_name <table_name> <reference_id>
## Development

```bash
./daptin-cli get-by-id --columns reference_id,table_name,is_top_level world 019228bb-a7cd-773b-a465-c92d7c54d956
# Install dependencies
npm install

# Run in development mode
npx tsx src/index.ts tables

# Type check
npm run typecheck

# Build
npm run build
```

## License

MIT
1 change: 0 additions & 1 deletion VERSION

This file was deleted.

7 changes: 0 additions & 7 deletions config.yaml

This file was deleted.

5 changes: 0 additions & 5 deletions generate_client_openapi.sh

This file was deleted.

Loading
Loading