mirror of
https://github.com/EZ-Api/ez-api.git
synced 2026-01-13 17:47:51 +00:00
feat(api): add model delete, pagination, and cors config
This commit is contained in:
@@ -176,6 +176,25 @@ func (s *SyncService) SyncModel(m *model.Model) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// SyncModelDelete removes model metadata from Redis and refreshes meta:models_meta.
|
||||
func (s *SyncService) SyncModelDelete(m *model.Model) error {
|
||||
if m == nil {
|
||||
return fmt.Errorf("model required")
|
||||
}
|
||||
name := strings.TrimSpace(m.Name)
|
||||
if name == "" {
|
||||
return fmt.Errorf("model name required")
|
||||
}
|
||||
ctx := context.Background()
|
||||
if err := s.rdb.HDel(ctx, "meta:models", name).Err(); err != nil {
|
||||
return fmt.Errorf("delete meta:models: %w", err)
|
||||
}
|
||||
if err := s.refreshModelsMetaFromRedis(ctx, "db"); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type providerSnapshot struct {
|
||||
ID uint `json:"id"`
|
||||
Name string `json:"name"`
|
||||
|
||||
@@ -93,6 +93,26 @@ func TestSyncKey_WritesTokenID(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSyncModelDelete_RemovesMeta(t *testing.T) {
|
||||
mr := miniredis.RunT(t)
|
||||
rdb := redis.NewClient(&redis.Options{Addr: mr.Addr()})
|
||||
svc := NewSyncService(rdb)
|
||||
|
||||
mr.HSet("meta:models", "ns.m", `{"name":"ns.m"}`)
|
||||
|
||||
m := &model.Model{Name: "ns.m"}
|
||||
if err := svc.SyncModelDelete(m); err != nil {
|
||||
t.Fatalf("SyncModelDelete: %v", err)
|
||||
}
|
||||
|
||||
if got := mr.HGet("meta:models", "ns.m"); got != "" {
|
||||
t.Fatalf("expected meta:models entry removed, got %q", got)
|
||||
}
|
||||
if v := mr.HGet("meta:models_meta", "version"); v == "" {
|
||||
t.Fatalf("expected meta:models_meta.version to be set")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSyncProviderDelete_RemovesSnapshotAndRouting(t *testing.T) {
|
||||
mr := miniredis.RunT(t)
|
||||
rdb := redis.NewClient(&redis.Options{Addr: mr.Addr()})
|
||||
|
||||
Reference in New Issue
Block a user