getColumn static method

Column? getColumn(
  1. VariableMirror variableMirror,
  2. String columnName,
  3. bool ignoreRelationColumns
)

Implementation

static Column? getColumn(VariableMirror variableMirror, String columnName,
    bool ignoreRelationColumns) {
  if (variableMirror.metadata.isEmpty) {
    return null;
  }

  dynamic variableElement = variableMirror.metadata[0];

  if (variableElement is Column || variableElement is PrimaryColumn) {
    Column column = variableElement;
    return Column(
        type: column.type != null
            ? column.type
            : Column.getColumnType(variableMirror.reflectedType),
        name: column.name != null ? column.name : columnName,
        attributeName: columnName,
        primary: column.primary,
        nullable: column.nullable,
        length: column.length,
        select: column.select,
        unique: column.unique);
  } else if (variableElement is ManyToOne) {
    ManyToOne manyToOneColumn = variableElement;

    return Column(
        type: ColumnType.TEXT,
        name: manyToOneColumn.joinColumnName,
        attributeName: columnName,
        relation: ColumnRelation(
            referencedColumn: 'id',
            attributeName: columnName,
            referencedTable: manyToOneColumn.parentTable,
            relationType: RelationType.ManyToOne,
            referencedEntity: Entity.getEntityDefinition(
                AnnotationReflectable.reflectType(manyToOneColumn.table)
                    as ClassMirror),
            referencedEntityColumns: ignoreRelationColumns
                ? null
                : Entity.getEntityColumns(
                    AnnotationReflectable.reflectType(manyToOneColumn.table)
                        as ClassMirror,
                    ignoreRelationColumns)));
  } else if (variableElement is OneToMany) {
    OneToMany oneToManyColumn = variableElement;

    return Column(
        type: ColumnType.TEXT,
        name: columnName,
        attributeName: columnName,
        relation: ColumnRelation(
            referencedColumn: 'id',
            attributeName: columnName,
            relationType: RelationType.OneToMany,
            referencedEntity: Entity.getEntityDefinition(
                AnnotationReflectable.reflectType(oneToManyColumn.table)
                    as ClassMirror),
            referencedEntityColumns: Entity.getEntityColumns(
                AnnotationReflectable.reflectType(oneToManyColumn.table)
                    as ClassMirror,
                true)));
  } else if (variableElement is OneToOne) {}

  return null;
}