Entity
In this guide, we'll go through the steps to create a new entity in your SoapJS project. You can create entities using CLI commands, interactive forms, or by defining them in a JSON file.
export class Customer {
constructor(
public readonly orders: Order[],
public readonly address: Address,
public readonly loyaltyPoints: number) {}
}Creating new entity
Using CLI Command with options
To create a new entity directly via the CLI, use the following command:
soap new entity -n "Customer" -e "shop" -p "orders:Array<Entity<Order>>, address:Entity<Address>, loyaltyPoints:number" -w -fOptions explained:
-n: Name of the entity (e.g., "Customer").-e: Endpoint associated with the entity (e.g., "shop").-p: Properties of the entity in"name:type"format, separated by commas.-w: Generate with dependencies included.-f: Force the creation, overwrite files if necessary.--help: display help for command
Using Interactive Form
If you prefer to use an interactive form to specify your entity details, simply run:
soap new entity -w -fFollow the prompts to enter your entity's details.
Using JSON Configuration
Alternatively, you can define your entities in a JSON file. Here is an example structure:
{
"entities": [
{
"name": "Customer",
"endpoint": "shop",
"has_model": false,
"props": [
{
"name": "orders",
"type": "Array<Entity<Order>>"
},
{
"name": "address",
"type": "Entity<Address>"
},
{
"name": "loyaltyPoints",
"type": "number"
}
]
}
]
}Save this to a file, for example api.json, and run:
soap new --json "./path/to/api.json" -w -fOptions:
--json: Path to your JSON configuration file.--no-tests: Skip test generation.--no-rel: Skip generating related files. You can also specify specific groups.--force: Force the creation, overwrite files if necessary.--patch: Add content to the files if they exists.--help: display help for command
File Structure
After creating your entity, your file structure (assuming default configuration settings) should look like this:
src/
- shop/
- domain/
- entities/
- customer.ts
- order.ts
- address.ts
- index.ts
...This structure helps maintain a clean separation of your domain logic, keeping your entities organized within the domain/entities directory.
Last updated