in out_writeapi.go [122:158]
func getDescriptors(curr_ctx context.Context, mw_client ManagedWriterClient, project string, dataset string, table string, dataTimeString bool) (protoreflect.MessageDescriptor, *descriptorpb.DescriptorProto, error) {
// Create streamID specific to the project, dataset, and table
curr_stream := fmt.Sprintf("projects/%s/datasets/%s/tables/%s/streams/_default", project, dataset, table)
// Create the getwritestreamrequest to have View_FULL so that the schema can be obtained
req := storagepb.GetWriteStreamRequest{
Name: curr_stream,
View: storagepb.WriteStreamView_FULL,
}
// Call getwritestream to get data on the table
table_data, err := mw_client.GetWriteStream(curr_ctx, &req)
if err != nil {
return nil, nil, err
}
// Get the schema from table data
init_table_schema := table_data.GetTableSchema()
table_schema := mangleInputSchema(init_table_schema, dataTimeString)
// Storage schema -> proto descriptor
descriptor, err := adapt.StorageSchemaToProto2Descriptor(table_schema, "root")
if err != nil {
return nil, nil, err
}
// Proto descriptor -> message descriptor
messageDescriptor, ok := descriptor.(protoreflect.MessageDescriptor)
if !ok {
return nil, nil, errors.New("Message descriptor could not be created from table's proto descriptor")
}
// Message descriptor -> descriptor proto
dp, err := adapt.NormalizeDescriptor(messageDescriptor)
if err != nil {
return nil, nil, err
}
return messageDescriptor, dp, nil
}