-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathdriven.go
More file actions
executable file
·68 lines (58 loc) · 1.87 KB
/
Copy pathdriven.go
File metadata and controls
executable file
·68 lines (58 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Copyright (C) 2021 CGI France
//
// This file is part of LINO.
//
// LINO is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// LINO is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with LINO. If not, see <http://www.gnu.org/licenses/>.
package push
// DataDestinationFactory exposes methods to create new datadestinations.
type DataDestinationFactory interface {
New(url string, schema string) DataDestination
}
// DataDestination to write in the push process.
type DataDestination interface {
Open(plan Plan, mode Mode, disableConstraints bool, whereClause string) *Error
Commit() *Error
RowWriter(table Table) (RowWriter, *Error)
OpenSQLLogger(folderPath string) error
Close() *Error
SafeUrl() string
}
// RowWriter write row to destination table
type RowWriter interface {
// Write row in external datasource. where is optional and can contains additional key=value to use in the where clause.
Write(row Row, where Row) *Error
}
type NoErrorCaptureRowWriter struct{}
func (necrw NoErrorCaptureRowWriter) Write(row Row, where Row) *Error {
return &Error{"No error capture configured"}
}
// RowIterator iter over a collection of rows
type RowIterator interface {
Next() bool
Value() *Row
Error() *Error
Close() *Error
}
type Key struct {
TableName string
ColumnName string
}
type Translator interface {
FindValue(key Key, value Value) Value
Load(keys []Key, rows RowIterator) *Error
}
type Observer interface {
Pushed()
Close()
}