onesvm-browser-server/server/internal/gateway/storeglue.go
chii eb972dfa93 feat: 落地 browser-server 控制面并打通 mgr1 海外订阅
单二进制三角色 + Dock 适配器 + Swarm stack 达到可部署态;mgr1 实测订阅经 central-proxy bootstrap,探活 alive=41/52。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 15:05:12 +08:00

48 lines
1.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// storeglue.go:gateway 对 store 的扩展查询(新增文件,禁改 W1 既有字段)。
package gateway
import (
"errors"
"onesvm.com/onesvm/browser-server/internal/store"
)
// storeErrNotFound 镜像 store.ErrNotFound。
var storeErrNotFound = store.ErrNotFound
// KeysAll 全量密钥列表(admin 列表用;禁 SELECT *,显式列名)。
func (d *DBGlue) KeysAll() ([]*store.ApiKey, error) {
rows, err := d.Raw().Query(
`SELECT id, consumer_id, prefix, name, hash, salt, scopes, rpm,
daily_quota, monthly_quota, concurrent_sessions, status, expires_at, created_at
FROM api_keys ORDER BY id ASC`)
if err != nil {
return nil, err
}
defer rows.Close()
var out []*store.ApiKey
for rows.Next() {
k, err := scanKeyPublic(rows)
if err != nil {
return nil, err
}
out = append(out, k)
}
return out, rows.Err()
}
// ConsumerByName 按名查消费者(不存在返回 store.ErrNotFound)。
func (d *DBGlue) ConsumerByName(name string) (int64, error) {
var id int64
err := d.Raw().QueryRow(`SELECT id FROM consumers WHERE name = ?`, name).Scan(&id)
if err != nil {
if errors.Is(err, errNoRows) {
return 0, store.ErrNotFound
}
return 0, err
}
return id, nil
}
// errNoRows 镜像 sql.ErrNoRows。
var errNoRows = errors.New("sql: no rows in result set")