Compare commits

...

2 Commits

Author SHA1 Message Date
5f5f1ad114 Generate cloud instead televendcloud entities 2025-12-15 10:37:28 +01:00
0a4030c389 Tweak output 2025-11-04 09:58:08 +01:00
9 changed files with 24 additions and 26 deletions

View File

@ -165,7 +165,6 @@ func run() error {
// Introspect table // Introspect table
prompt.PrintHeader("Introspecting Table") prompt.PrintHeader("Introspecting Table")
tableInfo, err := dbClient.IntrospectTable(cfg.DBTable) tableInfo, err := dbClient.IntrospectTable(cfg.DBTable)
if err != nil { if err != nil {
return fmt.Errorf("failed to introspect table: %w", err) return fmt.Errorf("failed to introspect table: %w", err)
@ -225,7 +224,6 @@ func run() error {
// Print summary // Print summary
prompt.PrintHeader("Summary") prompt.PrintHeader("Summary")
fmt.Printf("\n")
fmt.Printf(" Entity name: %s\n", color.GreenString(ctx.EntityName)) fmt.Printf(" Entity name: %s\n", color.GreenString(ctx.EntityName))
fmt.Printf(" Module name: %s\n", color.GreenString(ctx.ModuleName)) fmt.Printf(" Module name: %s\n", color.GreenString(ctx.ModuleName))
fmt.Printf(" Output dir: %s\n", color.GreenString(moduleDir)) fmt.Printf(" Output dir: %s\n", color.GreenString(moduleDir))

View File

@ -26,23 +26,23 @@ func GenerateFactory(ctx *Context) (string, error) {
} }
for moduleName, entityName := range fkImports { for moduleName, entityName := range fkImports {
b.WriteString(fmt.Sprintf("from televend_core.databases.televend_repositories.%s.factory import (\n", b.WriteString(fmt.Sprintf("from televend_core.databases.cloud_repositories.%s.factory import (\n",
moduleName)) moduleName))
b.WriteString(fmt.Sprintf(" %sFactory,\n", entityName)) b.WriteString(fmt.Sprintf(" %sFactory,\n", entityName))
b.WriteString(")\n") b.WriteString(")\n")
} }
b.WriteString(fmt.Sprintf("from televend_core.databases.televend_repositories.%s.model import (\n", b.WriteString(fmt.Sprintf("from televend_core.databases.cloud_repositories.%s.model import (\n",
ctx.ModuleName)) ctx.ModuleName))
b.WriteString(fmt.Sprintf(" %s,\n", ctx.EntityName)) b.WriteString(fmt.Sprintf(" %s,\n", ctx.EntityName))
b.WriteString(")\n") b.WriteString(")\n")
b.WriteString("from televend_core.test_extras.factory_boy_utils import (\n") b.WriteString("from televend_core.test_extras.factory_boy_utils import (\n")
b.WriteString(" CustomSelfAttribute,\n") b.WriteString(" CustomSelfAttribute,\n")
b.WriteString(" TelevendBaseFactory,\n") b.WriteString(" CloudBaseFactory,\n")
b.WriteString(")\n\n\n") b.WriteString(")\n\n\n")
// Class definition // Class definition
b.WriteString(fmt.Sprintf("class %sFactory(TelevendBaseFactory):\n", ctx.EntityName)) b.WriteString(fmt.Sprintf("class %sFactory(CloudBaseFactory):\n", ctx.EntityName))
// Add boolean fields with defaults // Add boolean fields with defaults
for _, col := range ctx.TableInfo.Columns { for _, col := range ctx.TableInfo.Columns {

View File

@ -14,7 +14,7 @@ func GenerateFilter(ctx *Context) (string, error) {
// Imports // Imports
b.WriteString("from televend_core.databases.base_filter import BaseFilter\n") b.WriteString("from televend_core.databases.base_filter import BaseFilter\n")
b.WriteString("from televend_core.databases.common.filters.filters import EQ, IN, filterfield\n") b.WriteString("from televend_core.databases.common.filters.filters import EQ, IN, filterfield\n")
b.WriteString(fmt.Sprintf("from televend_core.databases.televend_repositories.%s.model import %s\n", b.WriteString(fmt.Sprintf("from televend_core.databases.cloud_repositories.%s.model import %s\n",
ctx.ModuleName, ctx.EntityName)) ctx.ModuleName, ctx.EntityName))
b.WriteString("\n\n") b.WriteString("\n\n")
@ -64,8 +64,8 @@ func GenerateFilter(ctx *Context) (string, error) {
// Text fields // Text fields
if (col.DataType == "character varying" || col.DataType == "varchar" || if (col.DataType == "character varying" || col.DataType == "varchar" ||
col.DataType == "text" || col.DataType == "char" || col.DataType == "character") && col.DataType == "text" || col.DataType == "char" || col.DataType == "character") &&
!strings.HasSuffix(col.Name, "_id") && col.Name != "id" { !strings.HasSuffix(col.Name, "_id") && col.Name != "id" {
b.WriteString(fmt.Sprintf(" %s: str | None = filterfield(operator=EQ)\n", b.WriteString(fmt.Sprintf(" %s: str | None = filterfield(operator=EQ)\n",
col.Name)) col.Name))
} }

View File

@ -17,7 +17,7 @@ func TestGetRelationshipName(t *testing.T) {
{"with _id suffix", "author_info_id", "author_info"}, {"with _id suffix", "author_info_id", "author_info"},
{"with user_id", "user_id", "user"}, {"with user_id", "user_id", "user"},
{"without _id", "status", "status"}, {"without _id", "status", "status"},
{"just id", "id", "id"}, // "id" doesn't have "_id" suffix, so returns as-is {"just id", "id", "id"}, // "id" doesn't have "_id" suffix, so returns as-is
{"empty", "", ""}, {"empty", "", ""},
} }
@ -370,8 +370,8 @@ func TestGenerateRepository(t *testing.T) {
"CRUDRepository", "CRUDRepository",
"model_cls = User", "model_cls = User",
"from televend_core.databases.base_repository import CRUDRepository", "from televend_core.databases.base_repository import CRUDRepository",
"from televend_core.databases.televend_repositories.user.filter import", "from televend_core.databases.cloud_repositories.user.filter import",
"from televend_core.databases.televend_repositories.user.model import User", "from televend_core.databases.cloud_repositories.user.model import User",
} }
for _, expected := range expectedStrings { for _, expected := range expectedStrings {
@ -508,7 +508,7 @@ func TestGenerateTable(t *testing.T) {
}, },
expected: []string{ expected: []string{
"Enum", "Enum",
"from televend_core.databases.televend_repositories.order.enum import", "from televend_core.databases.cloud_repositories.order.enum import",
"OrderStatus", "OrderStatus",
`Enum(`, `Enum(`,
`*OrderStatus.to_value_list()`, `*OrderStatus.to_value_list()`,
@ -580,7 +580,7 @@ func TestGenerateModel(t *testing.T) {
EnumTypes: map[string]database.EnumType{}, EnumTypes: map[string]database.EnumType{},
}, },
expected: []string{ expected: []string{
"from televend_core.databases.televend_repositories.user.model import User", "from televend_core.databases.cloud_repositories.user.model import User",
"user_id: int", "user_id: int",
"user: User", "user: User",
"title: str", "title: str",
@ -791,7 +791,7 @@ func TestGenerateFactory(t *testing.T) {
"from __future__ import annotations", "from __future__ import annotations",
"from typing import Type", "from typing import Type",
"import factory", "import factory",
"class UserFactory(TelevendBaseFactory):", "class UserFactory(CloudBaseFactory):",
"alive = True", "alive = True",
"id = None", "id = None",
`name = factory.Faker("pystr", max_chars=100)`, `name = factory.Faker("pystr", max_chars=100)`,
@ -816,7 +816,7 @@ func TestGenerateFactory(t *testing.T) {
EnumTypes: map[string]database.EnumType{}, EnumTypes: map[string]database.EnumType{},
}, },
expected: []string{ expected: []string{
"from televend_core.databases.televend_repositories.user.factory import", "from televend_core.databases.cloud_repositories.user.factory import",
"UserFactory", "UserFactory",
`user = CustomSelfAttribute("..user", UserFactory)`, `user = CustomSelfAttribute("..user", UserFactory)`,
"user_id = factory.LazyAttribute(lambda a: a.user.id if a.user else None)", "user_id = factory.LazyAttribute(lambda a: a.user.id if a.user else None)",

View File

@ -12,7 +12,7 @@ func GenerateLoadOptions(ctx *Context) (string, error) {
// Imports // Imports
b.WriteString("from televend_core.databases.base_load_options import LoadOptions\n") b.WriteString("from televend_core.databases.base_load_options import LoadOptions\n")
b.WriteString("from televend_core.databases.common.load_options import joinload\n") b.WriteString("from televend_core.databases.common.load_options import joinload\n")
b.WriteString(fmt.Sprintf("from televend_core.databases.televend_repositories.%s.model import %s\n", b.WriteString(fmt.Sprintf("from televend_core.databases.cloud_repositories.%s.model import %s\n",
ctx.ModuleName, ctx.EntityName)) ctx.ModuleName, ctx.EntityName))
b.WriteString("\n\n") b.WriteString("\n\n")

View File

@ -11,13 +11,13 @@ func GenerateManager(ctx *Context) (string, error) {
// Imports // Imports
b.WriteString("from televend_core.databases.base_manager import CRUDManager\n") b.WriteString("from televend_core.databases.base_manager import CRUDManager\n")
b.WriteString(fmt.Sprintf("from televend_core.databases.televend_repositories.%s.filter import (\n", b.WriteString(fmt.Sprintf("from televend_core.databases.cloud_repositories.%s.filter import (\n",
ctx.ModuleName)) ctx.ModuleName))
b.WriteString(fmt.Sprintf(" %sFilter,\n", ctx.EntityName)) b.WriteString(fmt.Sprintf(" %sFilter,\n", ctx.EntityName))
b.WriteString(")\n") b.WriteString(")\n")
b.WriteString(fmt.Sprintf("from televend_core.databases.televend_repositories.%s.model import %s\n", b.WriteString(fmt.Sprintf("from televend_core.databases.cloud_repositories.%s.model import %s\n",
ctx.ModuleName, ctx.EntityName)) ctx.ModuleName, ctx.EntityName))
b.WriteString(fmt.Sprintf("from televend_core.databases.televend_repositories.%s.repository import (\n", b.WriteString(fmt.Sprintf("from televend_core.databases.cloud_repositories.%s.repository import (\n",
ctx.ModuleName)) ctx.ModuleName))
b.WriteString(fmt.Sprintf(" %sRepository,\n", ctx.EntityName)) b.WriteString(fmt.Sprintf(" %sRepository,\n", ctx.EntityName))
b.WriteString(")\n") b.WriteString(")\n")

View File

@ -38,7 +38,7 @@ func GenerateModel(ctx *Context) (string, error) {
// Import enum types // Import enum types
if len(ctx.TableInfo.EnumTypes) > 0 { if len(ctx.TableInfo.EnumTypes) > 0 {
b.WriteString(fmt.Sprintf("from televend_core.databases.televend_repositories.%s.enum import (\n", b.WriteString(fmt.Sprintf("from televend_core.databases.cloud_repositories.%s.enum import (\n",
ctx.ModuleName)) ctx.ModuleName))
for _, enumType := range ctx.TableInfo.EnumTypes { for _, enumType := range ctx.TableInfo.EnumTypes {
enumName := naming.ToPascalCase(enumType.TypeName) enumName := naming.ToPascalCase(enumType.TypeName)
@ -49,7 +49,7 @@ func GenerateModel(ctx *Context) (string, error) {
// Write foreign key imports // Write foreign key imports
for moduleName, entityName := range fkImports { for moduleName, entityName := range fkImports {
b.WriteString(fmt.Sprintf("from televend_core.databases.televend_repositories.%s.model import %s\n", b.WriteString(fmt.Sprintf("from televend_core.databases.cloud_repositories.%s.model import %s\n",
moduleName, entityName)) moduleName, entityName))
} }

View File

@ -11,11 +11,11 @@ func GenerateRepository(ctx *Context) (string, error) {
// Imports // Imports
b.WriteString("from televend_core.databases.base_repository import CRUDRepository\n") b.WriteString("from televend_core.databases.base_repository import CRUDRepository\n")
b.WriteString(fmt.Sprintf("from televend_core.databases.televend_repositories.%s.filter import (\n", b.WriteString(fmt.Sprintf("from televend_core.databases.cloud_repositories.%s.filter import (\n",
ctx.ModuleName)) ctx.ModuleName))
b.WriteString(fmt.Sprintf(" %sFilter,\n", ctx.EntityName)) b.WriteString(fmt.Sprintf(" %sFilter,\n", ctx.EntityName))
b.WriteString(")\n") b.WriteString(")\n")
b.WriteString(fmt.Sprintf("from televend_core.databases.televend_repositories.%s.model import %s\n", b.WriteString(fmt.Sprintf("from televend_core.databases.cloud_repositories.%s.model import %s\n",
ctx.ModuleName, ctx.EntityName)) ctx.ModuleName, ctx.EntityName))
b.WriteString("\n\n") b.WriteString("\n\n")

View File

@ -72,14 +72,14 @@ func GenerateTable(ctx *Context) (string, error) {
if len(ctx.TableInfo.EnumTypes) > 0 { if len(ctx.TableInfo.EnumTypes) > 0 {
for _, enumType := range ctx.TableInfo.EnumTypes { for _, enumType := range ctx.TableInfo.EnumTypes {
enumName := naming.ToPascalCase(enumType.TypeName) enumName := naming.ToPascalCase(enumType.TypeName)
b.WriteString(fmt.Sprintf("from televend_core.databases.televend_repositories.%s.enum import (\n", b.WriteString(fmt.Sprintf("from televend_core.databases.cloud_repositories.%s.enum import (\n",
ctx.ModuleName)) ctx.ModuleName))
b.WriteString(fmt.Sprintf(" %s,\n", enumName)) b.WriteString(fmt.Sprintf(" %s,\n", enumName))
b.WriteString(")\n") b.WriteString(")\n")
} }
} }
b.WriteString("from televend_core.databases.televend_repositories.table_meta import metadata_obj\n\n") b.WriteString("from televend_core.databases.cloud_repositories.table_meta import metadata_obj\n\n")
// Table definition // Table definition
b.WriteString(fmt.Sprintf("%s = Table(\n", ctx.TableConstant)) b.WriteString(fmt.Sprintf("%s = Table(\n", ctx.TableConstant))