init method
void
init()
Implementation
void init() {
objectType = objectType ?? ObjectType.table;
print(
'init() -> ${modelName == null ? '' : 'modelname: $modelName,'}tableName:$tableName');
modelName = toModelName(modelName, tableName!);
if (relationType != RelationType.MANY_TO_MANY) {
primaryKeyType =
primaryKeyType ?? PrimaryKeyType.integer_auto_incremental;
}
useSoftDeleting = useSoftDeleting ?? false;
initialized = false;
if (primaryKeyName != null && primaryKeyName!.isNotEmpty) {
if (!primaryKeyNames.contains(primaryKeyName)) {
primaryKeyNames.add(primaryKeyName!);
primaryKeyTypes
.add(primaryKeyType == PrimaryKeyType.text ? 'String' : 'int');
}
}
final List<SqfEntityFieldType> _addRelatedFields = <SqfEntityFieldType>[];
for (final field in fields!) {
field
..table = field.table ?? this
..isNotNull = field.isNotNull ?? false;
if (field is SqfEntityFieldRelationshipBase) {
field
..relationshipName = field.relationshipName ?? modelName
..formDropDownTextField =
field.formDropDownTextField ?? getformListTitleField(field.table!)
..dbType = field.table == null
? primaryKeyType != PrimaryKeyType.text
? DbType.integer
: DbType.text
: field.table!.primaryKeyType != PrimaryKeyType.text
? DbType.integer
: DbType.text
..deleteRule = field.deleteRule ?? DeleteRule.NO_ACTION
..relationType = field.relationType ?? RelationType.ONE_TO_MANY;
if (field.relationType != RelationType.MANY_TO_MANY) {
relationType = relationType ?? field.relationType;
}
if (field.relationType == RelationType.ONE_TO_ONE &&
field.table != this) {
// primaryKeyName = primaryKeyName != null && primaryKeyName.isNotEmpty
// ? '_$primaryKeyName'
// : '';
if ((primaryKeyName == null || primaryKeyName!.isEmpty) &&
field.isPrimaryKeyField!) {
primaryKeyType = field.table!.primaryKeyType;
}
field.fieldName =
field.fieldName == null || field.fieldName!.startsWith('_')
? field.fieldName
: '_${field.fieldName}';
}
field.primaryKeyIndex = 0;
if (!field.relationshipFields.contains(field)) {
field.relationshipFields.add(field);
}
int _primaryKeyIndex = 0;
field.table!.fields!
.where((f) =>
f.isPrimaryKeyField == true && f.fieldName != field.fieldName!)
.forEach((f) {
_primaryKeyIndex++;
final newField = SqfEntityFieldBase(
//'${tocamelCase(field.table!.tableName!)}${toCamelCase(f.fieldName!)}',
(tableName == field.table!.tableName
? f.fieldName
: '${tocamelCase(field.table!.tableName!)}${toCamelCase(f.fieldName!)}')!,
f.dbType!,
defaultValue: f.defaultValue,
primaryKeyIndex: _primaryKeyIndex,
minValue: f.minValue,
maxValue: f.maxValue);
//print('before field.relationshipFields.add. newField=${newField.fieldName} field.relationshipFields=${field.relationshipFields.map((e) => e.fieldName!).join(',')} ');
field.relationshipFields.add(newField);
if (fields!
.where((fi) => fi.fieldName == newField.fieldName)
.isEmpty) {
_addRelatedFields.add(newField);
}
});
}
if (field.isPrimaryKeyField != null && field.isPrimaryKeyField!) {
if (!primaryKeyNames.contains(field.fieldName!)) {
primaryKeyNames.add(field.fieldName!);
primaryKeyTypes.add(dartType[field.dbType!.index].toString());
}
}
if (field.dbType == DbType.date ||
field.dbType == DbType.datetime ||
field.dbType == DbType.datetimeUtc) {
field.minValue = field.minValue ?? '1900-01-01';
}
}
for (final newField in _addRelatedFields) {
fields!.add(newField);
}
//print( '>>>>>>>>>>>>>>>>>>>>>>>>>>>> SqfEntityTableBase of [$tableName](${primaryKeyNames.join(',')}) init() successfully');
}