func NewTableSyncer()

in nimo-shake/full-sync/table-syncer.go [38:71]


func NewTableSyncer(id int, table string, collectionMetric *utils.CollectionMetric) *tableSyncer {
	sourceConn, err := utils.CreateDynamoSession(conf.Options.LogLevel)
	if err != nil {
		LOG.Error("tableSyncer[%v] with table[%v] create dynamodb session error[%v]", id, table, err)
		return nil
	}

	// describe source table
	tableDescription, err := sourceConn.DescribeTable(&dynamodb.DescribeTableInput{
		TableName: aws.String(table),
	})
	if err != nil {
		LOG.Error("tableSyncer[%v] with table[%v] describe failed[%v]", id, table, err)
		return nil
	}

	converter := protocal.NewConverter(conf.Options.ConvertType)
	if converter == nil {
		LOG.Error("tableSyncer[%v] with table[%v] create converter failed", id, table)
		return nil
	}

	return &tableSyncer{
		id:                  id,
		sourceConn:          sourceConn,
		sourceTableDescribe: tableDescription.Table,
		converter:           converter,
		ns: utils.NS{
			Database:   conf.Options.Id,
			Collection: table,
		},
		collectionMetric: collectionMetric,
	}
}