feat: add test database setup and usage helpers

- Introduced a new test file for setting up an in-memory SQLite database for testing purposes.
- Added helper functions for seeding test data, including users, plans, subscriptions, and wallet transactions.
- Implemented usage helpers to load user video counts and storage usage.
- Created user payload struct and functions to build user payloads with preferences and wallet balance.
- Refactored gRPC server setup to include new services and handlers.
- Updated proto files to simplify service definitions by removing redundant service prefixes.
This commit is contained in:
2026-03-25 18:36:03 +07:00
parent a689f8b9da
commit dfd999e058
65 changed files with 6657 additions and 4464 deletions

View File

@@ -6,24 +6,21 @@ option go_package = "stream.api/internal/gen/proto/app/v1;appv1";
import "google/protobuf/wrappers.proto";
import "app/v1/common.proto";
service AccountService {
service Account {
rpc GetMe(GetMeRequest) returns (GetMeResponse);
rpc UpdateMe(UpdateMeRequest) returns (UpdateMeResponse);
rpc DeleteMe(DeleteMeRequest) returns (MessageResponse);
rpc ClearMyData(ClearMyDataRequest) returns (MessageResponse);
rpc GetUserById (google.protobuf.StringValue) returns (User) {}
}
service PreferencesService {
rpc GetPreferences(GetPreferencesRequest) returns (GetPreferencesResponse);
rpc UpdatePreferences(UpdatePreferencesRequest) returns (UpdatePreferencesResponse);
}
service UsageService {
service Usage {
rpc GetUsage(GetUsageRequest) returns (GetUsageResponse);
}
service NotificationsService {
service Notifications {
rpc ListNotifications(ListNotificationsRequest) returns (ListNotificationsResponse);
rpc MarkNotificationRead(MarkNotificationReadRequest) returns (MessageResponse);
rpc MarkAllNotificationsRead(MarkAllNotificationsReadRequest) returns (MessageResponse);

View File

@@ -6,7 +6,7 @@ option go_package = "stream.api/internal/gen/proto/app/v1;appv1";
import "app/v1/common.proto";
service AdminService {
service Admin {
rpc GetAdminDashboard(GetAdminDashboardRequest) returns (GetAdminDashboardResponse);
rpc ListAdminUsers(ListAdminUsersRequest) returns (ListAdminUsersResponse);
rpc GetAdminUser(GetAdminUserRequest) returns (GetAdminUserResponse);

View File

@@ -6,7 +6,7 @@ option go_package = "stream.api/internal/gen/proto/app/v1;appv1";
import "app/v1/common.proto";
service AuthService {
service Auth {
rpc Login(LoginRequest) returns (LoginResponse);
rpc Register(RegisterRequest) returns (RegisterResponse);
rpc Logout(LogoutRequest) returns (MessageResponse);

View File

@@ -6,27 +6,27 @@ option go_package = "stream.api/internal/gen/proto/app/v1;appv1";
import "app/v1/common.proto";
service DomainsService {
service Domains {
rpc ListDomains(ListDomainsRequest) returns (ListDomainsResponse);
rpc CreateDomain(CreateDomainRequest) returns (CreateDomainResponse);
rpc DeleteDomain(DeleteDomainRequest) returns (MessageResponse);
}
service AdTemplatesService {
service AdTemplates {
rpc ListAdTemplates(ListAdTemplatesRequest) returns (ListAdTemplatesResponse);
rpc CreateAdTemplate(CreateAdTemplateRequest) returns (CreateAdTemplateResponse);
rpc UpdateAdTemplate(UpdateAdTemplateRequest) returns (UpdateAdTemplateResponse);
rpc DeleteAdTemplate(DeleteAdTemplateRequest) returns (MessageResponse);
}
service PlayerConfigsService {
service PlayerConfigs {
rpc ListPlayerConfigs(ListPlayerConfigsRequest) returns (ListPlayerConfigsResponse);
rpc CreatePlayerConfig(CreatePlayerConfigRequest) returns (CreatePlayerConfigResponse);
rpc UpdatePlayerConfig(UpdatePlayerConfigRequest) returns (UpdatePlayerConfigResponse);
rpc DeletePlayerConfig(DeletePlayerConfigRequest) returns (MessageResponse);
}
service PlansService {
service Plans {
rpc ListPlans(ListPlansRequest) returns (ListPlansResponse);
}

View File

@@ -6,7 +6,7 @@ option go_package = "stream.api/internal/gen/proto/app/v1;appv1";
import "app/v1/common.proto";
service PaymentsService {
service Payments {
rpc CreatePayment(CreatePaymentRequest) returns (CreatePaymentResponse);
rpc ListPaymentHistory(ListPaymentHistoryRequest) returns (ListPaymentHistoryResponse);
rpc TopupWallet(TopupWalletRequest) returns (TopupWalletResponse);

View File

@@ -6,7 +6,7 @@ option go_package = "stream.api/internal/gen/proto/app/v1;appv1";
import "app/v1/common.proto";
service VideosService {
service Videos {
rpc GetUploadUrl(GetUploadUrlRequest) returns (GetUploadUrlResponse);
rpc CreateVideo(CreateVideoRequest) returns (CreateVideoResponse);
rpc ListVideos(ListVideosRequest) returns (ListVideosResponse);