12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package v2
- import (
- "context"
- "os"
- apiv2pb "github.com/usememos/memos/proto/gen/api/v2"
- "github.com/usememos/memos/server/profile"
- "github.com/usememos/memos/store"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/status"
- )
- type SystemService struct {
- apiv2pb.UnimplementedSystemServiceServer
- Profile *profile.Profile
- Store *store.Store
- }
- // NewSystemService creates a new SystemService.
- func NewSystemService(profile *profile.Profile, store *store.Store) *SystemService {
- return &SystemService{
- Profile: profile,
- Store: store,
- }
- }
- func (s *SystemService) GetSystemInfo(ctx context.Context, _ *apiv2pb.GetSystemInfoRequest) (*apiv2pb.GetSystemInfoResponse, error) {
- defaultSystemInfo := &apiv2pb.SystemInfo{}
- // Get the database size if the user is a host.
- userIDPtr := ctx.Value(UserIDContextKey)
- if userIDPtr != nil {
- userID := userIDPtr.(int32)
- user, err := s.Store.GetUser(ctx, &store.FindUser{
- ID: &userID,
- })
- if err != nil {
- return nil, status.Errorf(codes.Internal, "failed to get user: %v", err)
- }
- if user != nil && user.Role == store.RoleHost {
- fi, err := os.Stat(s.Profile.DSN)
- if err != nil {
- return nil, status.Errorf(codes.Internal, "failed to get file info: %v", err)
- }
- defaultSystemInfo.DbSize = fi.Size()
- }
- }
- response := &apiv2pb.GetSystemInfoResponse{
- SystemInfo: defaultSystemInfo,
- }
- return response, nil
- }
|