Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add StandardSQLTypeName factory methods to Field #43

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -268,12 +268,24 @@ public static Field of(String name, LegacySQLTypeName type, Field... subFields)
return newBuilder(name, type, subFields).build();
}

/** Returns a Field object with given name and type. */
public static Field of(String name, StandardSQLTypeName type, Field... subFields) {
checkArgument(!isNullOrEmpty(name), "Provided name is null or empty");
return newBuilder(name, type, subFields).build();
}

/** Returns a Field object with given name and type. */
public static Field of(String name, LegacySQLTypeName type, FieldList subFields) {
checkArgument(!isNullOrEmpty(name), "Provided name is null or empty");
return newBuilder(name, type, subFields).build();
}

/** Returns a Field object with given name and type. */
public static Field of(String name, StandardSQLTypeName type, FieldList subFields) {
checkArgument(!isNullOrEmpty(name), "Provided name is null or empty");
return newBuilder(name, type, subFields).build();
}

/** Returns a builder for a Field object with given name and type. */
public static Builder newBuilder(String name, LegacySQLTypeName type, Field... subFields) {
return new Builder().setName(name).setType(type, subFields);
Expand Down
Expand Up @@ -32,6 +32,7 @@ public class FieldTest {
private static final String FIELD_NAME3 = "RecordField";
private static final LegacySQLTypeName FIELD_TYPE1 = LegacySQLTypeName.STRING;
private static final LegacySQLTypeName FIELD_TYPE2 = LegacySQLTypeName.INTEGER;
private static final StandardSQLTypeName FIELD_TYPE1_STANDARD = StandardSQLTypeName.STRING;
private static final Field.Mode FIELD_MODE1 = Field.Mode.NULLABLE;
private static final Field.Mode FIELD_MODE2 = Field.Mode.REPEATED;
private static final Field.Mode FIELD_MODE3 = Field.Mode.REQUIRED;
Expand All @@ -49,6 +50,7 @@ public class FieldTest {
.setDescription(FIELD_DESCRIPTION2)
.build();
private static final LegacySQLTypeName FIELD_TYPE3 = LegacySQLTypeName.RECORD;
private static final StandardSQLTypeName FIELD_TYPE3_STANDARD = StandardSQLTypeName.STRUCT;
private static final Field FIELD_SCHEMA3 =
Field.newBuilder(FIELD_NAME3, FIELD_TYPE3, FIELD_SCHEMA1, FIELD_SCHEMA2)
.setMode(FIELD_MODE3)
Expand Down Expand Up @@ -112,6 +114,22 @@ public void testToBuilderIncompleteWithStandardSQLTypeName() {
compareFieldSchemas(field, field.toBuilder().build());
}

@Test
public void testToBuilderIncompleteStandard() {
Field field = Field.of(FIELD_NAME1, FIELD_TYPE1_STANDARD);
compareFieldSchemas(field, field.toBuilder().build());
field = Field.of(FIELD_NAME2, FIELD_TYPE3_STANDARD, FIELD_SCHEMA1, FIELD_SCHEMA2);
compareFieldSchemas(field, field.toBuilder().build());
}

@Test
public void testToBuilderIncompleteStandardWithStandardSQLTypeName() {
Field field = Field.of(FIELD_NAME1, FIELD_TYPE1_STANDARD);
compareFieldSchemas(field, field.toBuilder().build());
field = Field.of(FIELD_NAME2, FIELD_TYPE3_STANDARD, STANDARD_FIELD_SCHEMA1, STANDARD_FIELD_SCHEMA2);
compareFieldSchemas(field, field.toBuilder().build());
}

@Test
public void testBuilder() {
assertEquals(FIELD_NAME1, FIELD_SCHEMA1.getName());
Expand Down