mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
feat: channel gateway implementation and multi-bot refactor
- Refactor channel manager with support for Sender/Receiver interfaces and hot-swappable adapters. - Implement identity routing and pre-authentication logic for inbound messages. - Update database schema to support bot pre-auth keys and extended channel session metadata. - Add Telegram and Feishu channel configuration and adapter enhancements. - Update Swagger documentation and internal handlers for channel management. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.30.0
|
||||
// source: preauth.sql
|
||||
|
||||
package sqlc
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
)
|
||||
|
||||
const createBotPreauthKey = `-- name: CreateBotPreauthKey :one
|
||||
INSERT INTO bot_preauth_keys (bot_id, token, issued_by_user_id, expires_at)
|
||||
VALUES ($1, $2, $3, $4)
|
||||
RETURNING id, bot_id, token, issued_by_user_id, expires_at, used_at, created_at
|
||||
`
|
||||
|
||||
type CreateBotPreauthKeyParams struct {
|
||||
BotID pgtype.UUID `json:"bot_id"`
|
||||
Token string `json:"token"`
|
||||
IssuedByUserID pgtype.UUID `json:"issued_by_user_id"`
|
||||
ExpiresAt pgtype.Timestamptz `json:"expires_at"`
|
||||
}
|
||||
|
||||
func (q *Queries) CreateBotPreauthKey(ctx context.Context, arg CreateBotPreauthKeyParams) (BotPreauthKey, error) {
|
||||
row := q.db.QueryRow(ctx, createBotPreauthKey,
|
||||
arg.BotID,
|
||||
arg.Token,
|
||||
arg.IssuedByUserID,
|
||||
arg.ExpiresAt,
|
||||
)
|
||||
var i BotPreauthKey
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.BotID,
|
||||
&i.Token,
|
||||
&i.IssuedByUserID,
|
||||
&i.ExpiresAt,
|
||||
&i.UsedAt,
|
||||
&i.CreatedAt,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getBotPreauthKey = `-- name: GetBotPreauthKey :one
|
||||
SELECT id, bot_id, token, issued_by_user_id, expires_at, used_at, created_at
|
||||
FROM bot_preauth_keys
|
||||
WHERE token = $1
|
||||
LIMIT 1
|
||||
`
|
||||
|
||||
func (q *Queries) GetBotPreauthKey(ctx context.Context, token string) (BotPreauthKey, error) {
|
||||
row := q.db.QueryRow(ctx, getBotPreauthKey, token)
|
||||
var i BotPreauthKey
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.BotID,
|
||||
&i.Token,
|
||||
&i.IssuedByUserID,
|
||||
&i.ExpiresAt,
|
||||
&i.UsedAt,
|
||||
&i.CreatedAt,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const markBotPreauthKeyUsed = `-- name: MarkBotPreauthKeyUsed :one
|
||||
UPDATE bot_preauth_keys
|
||||
SET used_at = now()
|
||||
WHERE id = $1
|
||||
RETURNING id, bot_id, token, issued_by_user_id, expires_at, used_at, created_at
|
||||
`
|
||||
|
||||
func (q *Queries) MarkBotPreauthKeyUsed(ctx context.Context, id pgtype.UUID) (BotPreauthKey, error) {
|
||||
row := q.db.QueryRow(ctx, markBotPreauthKeyUsed, id)
|
||||
var i BotPreauthKey
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.BotID,
|
||||
&i.Token,
|
||||
&i.IssuedByUserID,
|
||||
&i.ExpiresAt,
|
||||
&i.UsedAt,
|
||||
&i.CreatedAt,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
Reference in New Issue
Block a user