block-quote On this pagechevron-down
copy Copy chevron-down
Components Use Case In this guide, we'll go through the steps to create a new use case in your SoapJS project. You can create use cases using CLI commands, interactive forms, or by defining them in a JSON file.
Copy export class ProcessOrderUseCase {
static Token = " ProcessOrderUseCase " ;
public async execute (
orderItems : Product [] ,
customerDetails : Customer ,
paymentMethod : string ,
) : Promise < Result < OrderConfirmation >> {
let confirmation : OrderConfirmation ;
// logic ...
return Result . withContent (confirmation) ;
}
} Creating new use case
Using CLI Command with options
To create a new use cases directly via the CLI, use the following command:
Copy soap new use-case -n " ProcessOrder " -e " shop " -i " orderItems:Array<Entity<Product>>,customerDetails:Customer,paymentMethod:string " -o " Entity<OrderConfirmation> " -w -f Options explained:
-n: Name of the use case (e.g., "ProcessOrder").
-e: Endpoint associated with the use case (e.g., "shop").
-i: Input of the use case in "name:type" format, separated by commas.
-o: Type of the use case output.
--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.
If you prefer to use an interactive form to specify your use case details, simply run:
Follow the prompts to enter your use case's details.
Using JSON Configuration
Alternatively, you can define your use cases in a JSON file. Here is an example structure:
Save this to a file, for example api.json, and run:
Options:
--json: Path to your JSON configuration file.
-w: Generate with dependencies included.
-f: Force the creation, overwrite files if necessary.
After creating your use cases, your file structure (assuming default configuration settings) should look like this:
This structure helps maintain a clean separation of your domain logic, keeping your use cases organized within the domain/use-cases/ directory.