fix: 将 libsql-client-go 作为普通目录提交,而非 gitlink
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
package hrana
|
||||
|
||||
import (
|
||||
"github.com/tursodatabase/libsql-client-go/libsql/internal/http/shared"
|
||||
)
|
||||
|
||||
type StreamRequest struct {
|
||||
Type string `json:"type"`
|
||||
Stmt *Stmt `json:"stmt,omitempty"`
|
||||
Batch *Batch `json:"batch,omitempty"`
|
||||
Sql *string `json:"sql,omitempty"`
|
||||
SqlId *int32 `json:"sql_id,omitempty"`
|
||||
}
|
||||
|
||||
func CloseStream() StreamRequest {
|
||||
return StreamRequest{Type: "close"}
|
||||
}
|
||||
|
||||
func ExecuteStream(sql string, params *shared.Params, wantRows bool) (*StreamRequest, error) {
|
||||
stmt := &Stmt{
|
||||
Sql: &sql,
|
||||
WantRows: wantRows,
|
||||
}
|
||||
if params != nil {
|
||||
if err := stmt.AddArgs(*params); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &StreamRequest{Type: "execute", Stmt: stmt}, nil
|
||||
}
|
||||
|
||||
func ExecuteStoredStream(sqlId int32, params shared.Params, wantRows bool) (*StreamRequest, error) {
|
||||
stmt := &Stmt{
|
||||
SqlId: &sqlId,
|
||||
WantRows: wantRows,
|
||||
}
|
||||
if err := stmt.AddArgs(params); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &StreamRequest{Type: "execute", Stmt: stmt}, nil
|
||||
}
|
||||
|
||||
func BatchStream(sqls []string, params []shared.Params, wantRows bool, transactional bool) (*StreamRequest, error) {
|
||||
size := len(sqls)
|
||||
if transactional {
|
||||
size += 1
|
||||
}
|
||||
batch := &Batch{Steps: make([]BatchStep, 0, size)}
|
||||
addArgs := len(params) > 0
|
||||
for idx, sql := range sqls {
|
||||
s := sql
|
||||
stmt := &Stmt{
|
||||
Sql: &s,
|
||||
WantRows: wantRows,
|
||||
}
|
||||
if addArgs {
|
||||
if err := stmt.AddArgs(params[idx]); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
var condition *BatchCondition
|
||||
if transactional {
|
||||
if idx > 0 {
|
||||
prev_idx := int32(idx - 1)
|
||||
condition = &BatchCondition{
|
||||
Type: "ok",
|
||||
Step: &prev_idx,
|
||||
}
|
||||
}
|
||||
}
|
||||
batch.Add(*stmt, condition)
|
||||
}
|
||||
if transactional {
|
||||
rollback := "ROLLBACK"
|
||||
last_idx := int32(len(sqls) - 1)
|
||||
batch.Add(Stmt{Sql: &rollback, WantRows: false},
|
||||
&BatchCondition{Type: "not", Cond: &BatchCondition{Type: "ok", Step: &last_idx}})
|
||||
}
|
||||
return &StreamRequest{Type: "batch", Batch: batch}, nil
|
||||
}
|
||||
|
||||
func StoreSqlStream(sql string, sqlId int32) StreamRequest {
|
||||
return StreamRequest{Type: "store_sql", Sql: &sql, SqlId: &sqlId}
|
||||
}
|
||||
|
||||
func CloseStoredSqlStream(sqlId int32) StreamRequest {
|
||||
return StreamRequest{Type: "close_sql", SqlId: &sqlId}
|
||||
}
|
||||
Reference in New Issue
Block a user