Search documentation of ash

# View Source mix ash.gen.resource (ash v3.4.30)

Generate and configure an Ash.Resource.

If the domain does not exist, we create it. If it does, we add the resource to it if it is not already present.

## Example

    mix ash.gen.resource Helpdesk.Support.Ticket \
      --default-actions read \
      --uuid-primary-key id \
      --attribute subject:string:required:public \
      --relationship belongs_to:representative:Helpdesk.Support.Representative \
      --timestamps \
      --extend postgres,graphql

## Options

- `--attribute` or `-a` - An attribute or comma separated list of attributes to add, as `name:type`. Modifiers: `primary_key`, `public`, `sensitive`, and `required`. i.e `-a name:string:required`
- `--relationship` or `-r` - A relationship or comma separated list of relationships to add, as `type:name:dest`. Modifiers: `public`. `belongs_to` only modifiers: `primary_key`, `sensitive`, and `required`. i.e `-r belongs_to:author:MyApp.Accounts.Author:required`
- `--default-actions` or `-da` - A csv list of default action types to add, i.e `-da read,create`. The `create` and `update` actions accept the public attributes being added.
- `--uuid-primary-key` or `-u` - Adds a UUIDv4 primary key with that name. i.e `-u id`
- `--uuid-v7-primary-key` or `-u7` - Adds a UUIDv7 primary key with that name. i.e `-u7 id`
- `--integer-primary-key` or `-i` - Adds an integer primary key with that name. i.e `-i id`
- `--domain` or `-d` - The domain module to add the resource to. i.e `-d MyApp.MyDomain`. This defaults to the resource's module name, minus the last segment.
- `--extend` or `-e` - A comma separated list of modules or builtins to extend the resource with. i.e `-e postgres,Some.Extension`
- `--base` or `-b` - The base module to use for the resource. i.e `-b Ash.Resource`. Requires that the module is in `config :your_app, :base_resources`
- `--timestamps` or `-t` - If set adds `inserted_at` and `updated_at` timestamps to the resource.