refactor: extract domain models from provider into internal/model

- Move Server/Domain/DNSRecord/Bucket/StorageInstance/CDNInstance/Order/Error structs to internal/model/
- Provider interfaces now reference model.* types
- Rainyun provider implementations import model package for data types
- CLI commands updated to use model.DNSRecord directly

Separates pure data structures from service contract interfaces,
following hexagonal architecture: models (entities) live independently
from ports (provider interfaces) and adapters (rainyun/* implementations).
This commit is contained in:
2026-07-28 19:31:22 +08:00
parent ccc9f27130
commit bbba314127
12 changed files with 127 additions and 112 deletions
+7 -7
View File
@@ -4,14 +4,14 @@ import (
"context"
"fmt"
"git.yoresee.cc/nightstar/ry/internal/provider"
"git.yoresee.cc/nightstar/ry/internal/model"
)
type StorageService struct {
client *client
}
func (s *StorageService) List(ctx context.Context) ([]provider.StorageInstance, error) {
func (s *StorageService) List(ctx context.Context) ([]model.StorageInstance, error) {
var raw []struct {
ID int `json:"id"`
Name string `json:"name"`
@@ -20,9 +20,9 @@ func (s *StorageService) List(ctx context.Context) ([]provider.StorageInstance,
if err := s.client.getList(ctx, "/product/ros/instance", &raw); err != nil {
return nil, err
}
instances := make([]provider.StorageInstance, len(raw))
instances := make([]model.StorageInstance, len(raw))
for i, r := range raw {
instances[i] = provider.StorageInstance{
instances[i] = model.StorageInstance{
ID: fmt.Sprintf("%d", r.ID),
Name: r.Name,
Raw: r,
@@ -31,7 +31,7 @@ func (s *StorageService) List(ctx context.Context) ([]provider.StorageInstance,
return instances, nil
}
func (s *StorageService) BucketList(ctx context.Context, instanceID string) ([]provider.Bucket, error) {
func (s *StorageService) BucketList(ctx context.Context, instanceID string) ([]model.Bucket, error) {
type rainyunBucket struct {
ID int `json:"id"`
Name string `json:"name"`
@@ -42,9 +42,9 @@ func (s *StorageService) BucketList(ctx context.Context, instanceID string) ([]p
if err := s.client.get(ctx, path, &raw); err != nil {
return nil, err
}
buckets := make([]provider.Bucket, len(raw))
buckets := make([]model.Bucket, len(raw))
for i, r := range raw {
buckets[i] = provider.Bucket{
buckets[i] = model.Bucket{
ID: fmt.Sprintf("%d", r.ID),
Name: r.Name,
}