mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-26 17:49:15 +01:00
refactor: integrated database services into task data insert
This commit is contained in:
61
core/database/entity/database.go
Normal file
61
core/database/entity/database.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package entity
|
||||
|
||||
type DatabaseMetadata struct {
|
||||
Databases []Database `json:"databases"`
|
||||
}
|
||||
|
||||
type Database struct {
|
||||
Name string `json:"name"`
|
||||
Tables []DatabaseTable `json:"tables"`
|
||||
}
|
||||
|
||||
type DatabaseTable struct {
|
||||
Name string `json:"name"`
|
||||
Columns []DatabaseColumn `json:"columns"`
|
||||
Indexes []DatabaseIndex `json:"indexes"`
|
||||
}
|
||||
|
||||
type DatabaseColumn struct {
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"`
|
||||
Primary bool `json:"primary,omitempty"`
|
||||
NotNull bool `json:"not_null,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Default string `json:"default,omitempty"`
|
||||
Extra string `json:"extra,omitempty"`
|
||||
AutoIncrement bool `json:"auto_increment,omitempty"`
|
||||
Children []DatabaseColumn `json:"children,omitempty"`
|
||||
Hash string `json:"hash,omitempty"`
|
||||
OriginalName string `json:"original_name,omitempty"`
|
||||
Status string `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type DatabaseIndex struct {
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Columns []DatabaseIndexColumn `json:"columns"`
|
||||
Unique bool `json:"unique"`
|
||||
Hash string `json:"hash,omitempty"`
|
||||
OriginalName string `json:"original_name,omitempty"`
|
||||
Status string `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
type DatabaseIndexColumn struct {
|
||||
Name string `json:"name"`
|
||||
Order int `json:"order"`
|
||||
}
|
||||
|
||||
func (col *DatabaseIndexColumn) OrderString() string {
|
||||
if col.Order < 0 {
|
||||
return "DESC"
|
||||
} else {
|
||||
return "ASC"
|
||||
}
|
||||
}
|
||||
|
||||
type DatabaseQueryResults struct {
|
||||
Columns []DatabaseColumn `json:"columns,omitempty"`
|
||||
Rows []map[string]interface{} `json:"rows,omitempty"`
|
||||
Output string `json:"output,omitempty"`
|
||||
Error string `json:"error,omitempty"`
|
||||
}
|
||||
11
core/database/interfaces/database_registry_service.go
Normal file
11
core/database/interfaces/database_registry_service.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package interfaces
|
||||
|
||||
import (
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type DatabaseRegistryService interface {
|
||||
Start()
|
||||
CheckStatus()
|
||||
GetDatabaseService(id primitive.ObjectID) (res DatabaseService, err error)
|
||||
}
|
||||
27
core/database/interfaces/database_service.go
Normal file
27
core/database/interfaces/database_service.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package interfaces
|
||||
|
||||
import (
|
||||
"github.com/crawlab-team/crawlab/core/database/entity"
|
||||
"github.com/crawlab-team/crawlab/core/models/models/v2"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type DatabaseService interface {
|
||||
TestConnection(id primitive.ObjectID) (err error)
|
||||
GetMetadata(id primitive.ObjectID) (m *entity.DatabaseMetadata, err error)
|
||||
GetMetadataAllDb(id primitive.ObjectID) (m *entity.DatabaseMetadata, err error)
|
||||
CreateDatabase(id primitive.ObjectID, databaseName string) (err error)
|
||||
DropDatabase(id primitive.ObjectID, databaseName string) (err error)
|
||||
GetTableMetadata(id primitive.ObjectID, databaseName, tableName string) (table *entity.DatabaseTable, err error)
|
||||
CreateTable(id primitive.ObjectID, databaseName string, table *entity.DatabaseTable) (err error)
|
||||
ModifyTable(id primitive.ObjectID, databaseName string, table *entity.DatabaseTable) (err error)
|
||||
DropTable(id primitive.ObjectID, databaseName, tableName string) (err error)
|
||||
RenameTable(id primitive.ObjectID, databaseName, oldTableName, newTableName string) (err error)
|
||||
GetColumnTypes(query string) (types []string)
|
||||
ReadRows(id primitive.ObjectID, databaseName, tableName string, filter map[string]interface{}, skip, limit int) ([]map[string]interface{}, int64, error)
|
||||
CreateRow(id primitive.ObjectID, databaseName, tableName string, row map[string]interface{}) error
|
||||
UpdateRow(id primitive.ObjectID, databaseName, tableName string, filter map[string]interface{}, update map[string]interface{}) error
|
||||
DeleteRow(id primitive.ObjectID, databaseName, tableName string, filter map[string]interface{}) error
|
||||
Query(id primitive.ObjectID, databaseName, query string) (results *entity.DatabaseQueryResults, err error)
|
||||
GetCurrentMetric(id primitive.ObjectID) (m *models.DatabaseMetricV2, err error)
|
||||
}
|
||||
15
core/database/registry_service.go
Normal file
15
core/database/registry_service.go
Normal file
@@ -0,0 +1,15 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"github.com/crawlab-team/crawlab/core/database/interfaces"
|
||||
)
|
||||
|
||||
var serviceInstance interfaces.DatabaseRegistryService
|
||||
|
||||
func SetDatabaseRegistryService(svc interfaces.DatabaseRegistryService) {
|
||||
serviceInstance = svc
|
||||
}
|
||||
|
||||
func GetDatabaseRegistryService() interfaces.DatabaseRegistryService {
|
||||
return serviceInstance
|
||||
}
|
||||
Reference in New Issue
Block a user