package postgres import "context" type terminalMapping struct { ID int64 `gorm:"colunmn:id"` Component string `gorm:"column:component"` Tag string `gorm:"column:tag"` // mapping TODO } func GetAllTerminalMapping(ctx context.Context, batchSize int) ([]*terminalMapping, error) { var totalRecords []*terminalMapping id := 0 for { var records []*terminalMapping result := client.WithContext(ctx).Table("terminal_mapping").Where("id > ?", id). Order("id ASC").Limit(batchSize).Find(&records) if result.Error != nil { return totalRecords, result.Error } length := len(records) if length <= 0 { break } id += length totalRecords = append(totalRecords, records...) } return totalRecords, nil } func GetStationTerminalMapping(ctx context.Context, batchSize int, station string) ([]*terminalMapping, error) { var totalRecords []*terminalMapping id := 0 for { var records []*terminalMapping result := client.WithContext(ctx).Table("terminal_mapping").Where("station = ?", station). Where("id > ?", id).Order("id ASC").Limit(batchSize).Find(&records) if result.Error != nil { return totalRecords, result.Error } length := len(records) if length <= 0 { break } id += length totalRecords = append(totalRecords, records...) } return totalRecords, nil }