mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Codegen: implement db_table_name in rustgen
This commit is contained in:
@@ -27,14 +27,20 @@ def _get_type(t: str) -> str:
|
||||
return t
|
||||
|
||||
|
||||
def _get_table_name(cls: schema.Class, p: schema.Property) -> str:
|
||||
if p.is_single:
|
||||
return inflection.tableize(cls.name)
|
||||
overridden_table_name = p.pragmas.get("ql_db_table_name")
|
||||
if overridden_table_name:
|
||||
return overridden_table_name
|
||||
table_name = f"{cls.name}_{p.name}"
|
||||
if p.is_predicate:
|
||||
return inflection.underscore(table_name)
|
||||
else:
|
||||
return inflection.tableize(table_name)
|
||||
|
||||
|
||||
def _get_field(cls: schema.Class, p: schema.Property) -> rust.Field:
|
||||
table_name = inflection.tableize(cls.name)
|
||||
if not p.is_single:
|
||||
table_name = f"{cls.name}_{p.name}"
|
||||
if p.is_predicate:
|
||||
table_name = inflection.underscore(table_name)
|
||||
else:
|
||||
table_name = inflection.tableize(table_name)
|
||||
args = dict(
|
||||
field_name=rust.avoid_keywords(p.name),
|
||||
base_type=_get_type(p.type),
|
||||
@@ -42,7 +48,7 @@ def _get_field(cls: schema.Class, p: schema.Property) -> rust.Field:
|
||||
is_repeated=p.is_repeated,
|
||||
is_predicate=p.is_predicate,
|
||||
is_unordered=p.is_unordered,
|
||||
table_name=table_name,
|
||||
table_name=_get_table_name(cls, p),
|
||||
)
|
||||
args.update(rust.get_field_override(p.name))
|
||||
return rust.Field(**args)
|
||||
|
||||
Reference in New Issue
Block a user