def _build_system_field_handlers(
        table_name: str) -> List[field_handlers.FieldHandler]:
    res = list()
    id_handler = field_handlers.IntFieldHandler(_FIELD_CODE_DOC_ID, 'Id',
                                                table_name)
    id_handler.pg_type = field_handlers.PgTypes.INTEGER_PRIMARY_KEY
    res.append(id_handler)
    res.append(
        field_handlers.StringFieldHandler(_FIELD_CODE_DOC_NAME, 'Name',
                                          table_name))
    res.append(
        field_handlers.StringFieldHandler(_FIELD_CODE_DOC_TITLE, 'Title',
                                          table_name))
    res.append(
        field_handlers.StringWithTextSearchFieldHandler(
            _FIELD_CODE_DOC_FULL_TEXT, 'Text', table_name))
    res.append(
        field_handlers.IntFieldHandler(_FIELD_CODE_DOC_FULL_TEXT_LENGTH,
                                       'Text Length', table_name))
    res.append(
        field_handlers.BooleanFieldHandler(_FIELD_CODE_IS_REVIEWED, 'Reviewed',
                                           table_name))
    res.append(
        field_handlers.IntFieldHandler(_FIELD_CODE_PROJECT_ID, 'Project Id',
                                       table_name))
    res.append(
        field_handlers.StringFieldHandler(_FIELD_CODE_ASSIGNEE_NAME,
                                          'Assignee', table_name))
    res.append(
        field_handlers.StringFieldHandler(_FIELD_CODE_STATUS_NAME, 'Status',
                                          table_name))
    return res
def _build_generic_field_handlers(
        table_name: str) -> List[field_handlers.FieldHandler]:
    res = list()
    res.append(
        field_handlers.IntFieldHandler(_FIELD_CODE_CLUSTER_ID, 'Cluster Id',
                                       table_name))
    res.append(
        field_handlers.StringFieldHandler(_FIELD_CODE_PARTIES, 'Parties',
                                          table_name))
    res.append(
        field_handlers.DateFieldHandler(_FIELD_CODE_EARLIEST_DATE,
                                        'Earliest Date', table_name))
    res.append(
        field_handlers.DateFieldHandler(_FIELD_CODE_LATEST_DATE, 'Latest Date',
                                        table_name))
    res.append(
        field_handlers.MoneyFieldHandler(_FIELD_CODE_LARGEST_CURRENCY,
                                         'Largest Currency', table_name))
    return res
def _build_system_field_handlers(
        table_name: str) -> List[field_handlers.FieldHandler]:
    res = list()
    id_handler = field_handlers.IntFieldHandler(FIELD_CODE_DOC_ID,
                                                field_types.IntField.code,
                                                'Id', table_name)
    id_handler.pg_type = field_handlers.PgTypes.INTEGER_PRIMARY_KEY
    res.append(id_handler)
    res.append(
        field_handlers.StringFieldHandler(
            FIELD_CODE_DOC_NAME,
            field_types.StringFieldWholeValueAsAToken.code, 'Name',
            table_name))
    res.append(
        field_handlers.StringFieldHandler(FIELD_CODE_DOC_TITLE,
                                          field_types.StringField.code,
                                          'Title', table_name))
    res.append(
        field_handlers.StringWithTextSearchFieldHandler(
            FIELD_CODE_DOC_FULL_TEXT, field_types.StringField.code, 'Text',
            table_name))
    res.append(
        field_handlers.IntFieldHandler(FIELD_CODE_DOC_FULL_TEXT_LENGTH,
                                       field_types.IntField.code,
                                       'Text Length', table_name))
    res.append(
        field_handlers.BooleanFieldHandler(FIELD_CODE_IS_REVIEWED,
                                           field_types.BooleanField.code,
                                           'Reviewed', table_name))
    res.append(
        field_handlers.BooleanFieldHandler(FIELD_CODE_IS_COMPLETED,
                                           field_types.BooleanField.code,
                                           'Completed', table_name))
    res.append(
        field_handlers.IntFieldHandler(FIELD_CODE_PROJECT_ID,
                                       field_types.IntField.code, 'Project Id',
                                       table_name))
    res.append(
        field_handlers.StringFieldHandler(FIELD_CODE_PROJECT_NAME,
                                          field_types.StringField.code,
                                          'Project', table_name))
    res.append(
        field_handlers.IntFieldHandler(FIELD_CODE_ASSIGNEE_ID,
                                       field_types.IntField.code,
                                       'Assignee Id', table_name))
    res.append(
        field_handlers.StringFieldHandler(FIELD_CODE_ASSIGNEE_NAME,
                                          field_types.StringField.code,
                                          'Assignee', table_name))
    res.append(
        field_handlers.DateTimeFieldHandler(FIELD_CODE_ASSIGN_DATE,
                                            field_types.DateTimeField.code,
                                            'Assign Date', table_name))
    res.append(
        field_handlers.DateTimeFieldHandler(FIELD_CODE_CREATE_DATE,
                                            field_types.DateTimeField.code,
                                            'Load Date', table_name))
    res.append(
        field_handlers.StringFieldHandler(
            FIELD_CODE_STATUS_NAME,
            field_types.StringFieldWholeValueAsAToken.code, 'Status',
            table_name))
    return res