Initial 2
This commit is contained in:
58
CLAUDE.md
58
CLAUDE.md
@ -11,9 +11,51 @@ Application connects to postgres database, inspects targeted table and creates:
|
||||
- repository
|
||||
- manager
|
||||
- factory
|
||||
- mapper
|
||||
|
||||
## Generated files
|
||||
|
||||
Generated source files are targeted for Python 3.13 using SQLAlchemy.
|
||||
|
||||
All example files import from televend_core.databases.*, our a specific in-house framework.
|
||||
Pluralization should be not just handling the *s* suffix, but using proper english.
|
||||
|
||||
### Foreign key relationships
|
||||
Create imports following naming rules. For example, for author_info table, create import as `from televend_core.databases.televend_repositories.author_info.model import AuthorInfo`
|
||||
|
||||
Strip `_id` suffix from field name and use proper entity name.
|
||||
|
||||
### PostgreSQL enum types
|
||||
|
||||
Query PostgreSQL system catalogs to get enum values and place it in `enum.py` output file. Also, use those values in factory, as in example.
|
||||
|
||||
### Reverse relationships
|
||||
|
||||
Skip reverse relationships entirely. They will be added manually later when files are generated.
|
||||
|
||||
### Filter field selection
|
||||
|
||||
Available filter operators are listed in `./example/filters.py`. Generate filters using following rules:
|
||||
- All boolean fields: create filter with EQ operator
|
||||
- All ID fields (primary key and foreign keys): create filters with both EQ and IN operators. For IN operator, use plural field name (e.g., `ids: list[int]` for `id` field, `machine_ids: list[int]` for `machine_id` field)
|
||||
- All text fields (varchar, text): create filter with EQ operator only
|
||||
|
||||
### Mapper file
|
||||
|
||||
Generate mapper file snippet without import statements. Map all foreign keys as relationships. User will manually remove relationships that are not important later.
|
||||
|
||||
### Load options
|
||||
|
||||
Load options should include all relationships defined in the mapper file.
|
||||
|
||||
### Factory special cases
|
||||
|
||||
Ignore factory special cases (e.g., using `.user_ptr_id` instead of `.id`). Use standard `.id` for all foreign key references.
|
||||
|
||||
### Missing fields in model
|
||||
|
||||
Include all fields from database table in the generated model, even if missing in example.
|
||||
|
||||
## Input parameters
|
||||
|
||||
Application have following command line parameters:
|
||||
@ -27,15 +69,29 @@ Application have following command line parameters:
|
||||
- optional output directory
|
||||
- optional entity name
|
||||
|
||||
When application starts, it will offer users to enter missing parameters from command line, using defaults as listed above. Save entered values in `~/.config/entity-maker` and use it for the next time.
|
||||
When application starts, it will offer users to enter missing parameters from command line, using defaults as listed above. Save entered values in `~/.config/entity-maker.toml` and use it for the next time.
|
||||
|
||||
### CLI prompts behavior
|
||||
|
||||
- Display current value from config file (if exists)
|
||||
- Allow pressing Enter to accept default or stored value
|
||||
- Validate inputs:
|
||||
- Port must be numeric
|
||||
- Database name is required (no default)
|
||||
- Table name is required (no default)
|
||||
- Output directory must exist or be creatable
|
||||
|
||||
Generated files are placed in specificied output directory, in subdirectory named after table name, but in sigular. Check naming section for details.
|
||||
|
||||
Optional entity name should override the automatically generated entity name.
|
||||
|
||||
## Examples
|
||||
|
||||
Example sql table structure is located in `./example/cashbag_conforms.sql`.
|
||||
Example output is located in `./example/cashbag_conform`.
|
||||
|
||||
Note: In the example SQL, the `route_id` field is deprecated and not used in generated files. This is intentional and should not be used as reference.
|
||||
|
||||
## Naming example
|
||||
|
||||
Table name: `cashbag_conforms`.
|
||||
|
||||
Reference in New Issue
Block a user