in nimo-shake/writer/mongodb_community_driver.go [62:103]
func (mcw *MongoCommunityWriter) CreateTable(tableDescribe *dynamodb.TableDescription) error {
// parse primary key with sort key
allIndexes := tableDescribe.AttributeDefinitions
primaryIndexes := tableDescribe.KeySchema
globalSecondaryIndexes := tableDescribe.GlobalSecondaryIndexes
mcw.primaryIndexes = primaryIndexes
LOG.Info("%s table[%s] primary index length: %v", mcw.String(), *tableDescribe.TableName, len(mcw.primaryIndexes))
// parse index type
parseMap := utils.ParseIndexType(allIndexes)
// create primary key if has
if len(primaryIndexes) == 0 {
LOG.Info("%s no index found", mcw)
return nil
}
// check if legal
if len(primaryIndexes) > 2 {
return fmt.Errorf("%s illegal primary index[%v] number, should <= 2", mcw, len(primaryIndexes))
}
if conf.Options.FullEnableIndexPrimary {
LOG.Info("%s try create primary index", mcw)
// create primary index
if err := mcw.createPrimaryIndex(primaryIndexes, parseMap); err != nil {
return err
}
// create user index
if conf.Options.FullEnableIndexUser {
LOG.Info("%s try create user index", mcw)
// create user index
if err := mcw.createUserIndex(globalSecondaryIndexes, parseMap); err != nil {
return err
}
}
}
return nil
}