migrate db

This commit is contained in:
tk 2025-08-16 14:28:40 +02:00
parent 4ad511cc92
commit 6f75132073
18 changed files with 3402 additions and 14 deletions

View file

@ -12,8 +12,10 @@
import 'package:serverpod_client/serverpod_client.dart' as _i1; import 'package:serverpod_client/serverpod_client.dart' as _i1;
import 'dart:async' as _i2; import 'dart:async' as _i2;
import 'package:wien_talks_client/src/protocol/greeting.dart' as _i3; import 'package:wien_talks_client/src/protocol/greeting.dart' as _i3;
import 'package:serverpod_auth_client/serverpod_auth_client.dart' as _i4; import 'package:wien_talks_client/src/protocol/quotes/quote.dart' as _i4;
import 'protocol.dart' as _i5; import 'package:wien_talks_client/src/protocol/quotes/create_quote.dart' as _i5;
import 'package:serverpod_auth_client/serverpod_auth_client.dart' as _i6;
import 'protocol.dart' as _i7;
/// This is an example endpoint that returns a greeting message through /// This is an example endpoint that returns a greeting message through
/// its [hello] method. /// its [hello] method.
@ -33,12 +35,41 @@ class EndpointGreeting extends _i1.EndpointRef {
); );
} }
/// {@category Endpoint}
class EndpointQuote extends _i1.EndpointRef {
EndpointQuote(_i1.EndpointCaller caller) : super(caller);
@override
String get name => 'quote';
_i2.Future<_i4.Quote> createQuote(_i5.CreateQuoteRequest req) =>
caller.callServerEndpoint<_i4.Quote>(
'quote',
'createQuote',
{'req': req},
);
_i2.Future<_i4.Quote> getQuoteById(int id) =>
caller.callServerEndpoint<_i4.Quote>(
'quote',
'getQuoteById',
{'id': id},
);
_i2.Future<List<_i4.Quote>> getAllQuotes() =>
caller.callServerEndpoint<List<_i4.Quote>>(
'quote',
'getAllQuotes',
{},
);
}
class Modules { class Modules {
Modules(Client client) { Modules(Client client) {
auth = _i4.Caller(client); auth = _i6.Caller(client);
} }
late final _i4.Caller auth; late final _i6.Caller auth;
} }
class Client extends _i1.ServerpodClientShared { class Client extends _i1.ServerpodClientShared {
@ -57,7 +88,7 @@ class Client extends _i1.ServerpodClientShared {
bool? disconnectStreamsOnLostInternetConnection, bool? disconnectStreamsOnLostInternetConnection,
}) : super( }) : super(
host, host,
_i5.Protocol(), _i7.Protocol(),
securityContext: securityContext, securityContext: securityContext,
authenticationKeyManager: authenticationKeyManager, authenticationKeyManager: authenticationKeyManager,
streamingConnectionTimeout: streamingConnectionTimeout, streamingConnectionTimeout: streamingConnectionTimeout,
@ -68,15 +99,21 @@ class Client extends _i1.ServerpodClientShared {
disconnectStreamsOnLostInternetConnection, disconnectStreamsOnLostInternetConnection,
) { ) {
greeting = EndpointGreeting(this); greeting = EndpointGreeting(this);
quote = EndpointQuote(this);
modules = Modules(this); modules = Modules(this);
} }
late final EndpointGreeting greeting; late final EndpointGreeting greeting;
late final EndpointQuote quote;
late final Modules modules; late final Modules modules;
@override @override
Map<String, _i1.EndpointRef> get endpointRefLookup => {'greeting': greeting}; Map<String, _i1.EndpointRef> get endpointRefLookup => {
'greeting': greeting,
'quote': quote,
};
@override @override
Map<String, _i1.ModuleEndpointCaller> get moduleLookup => Map<String, _i1.ModuleEndpointCaller> get moduleLookup =>

View file

@ -13,7 +13,8 @@ import 'package:serverpod_client/serverpod_client.dart' as _i1;
import 'greeting.dart' as _i2; import 'greeting.dart' as _i2;
import 'quotes/create_quote.dart' as _i3; import 'quotes/create_quote.dart' as _i3;
import 'quotes/quote.dart' as _i4; import 'quotes/quote.dart' as _i4;
import 'package:serverpod_auth_client/serverpod_auth_client.dart' as _i5; import 'package:wien_talks_client/src/protocol/quotes/quote.dart' as _i5;
import 'package:serverpod_auth_client/serverpod_auth_client.dart' as _i6;
export 'greeting.dart'; export 'greeting.dart';
export 'quotes/create_quote.dart'; export 'quotes/create_quote.dart';
export 'quotes/quote.dart'; export 'quotes/quote.dart';
@ -60,8 +61,11 @@ class Protocol extends _i1.SerializationManager {
? (data as List).map((e) => deserialize<String>(e)).toList() ? (data as List).map((e) => deserialize<String>(e)).toList()
: null) as T; : null) as T;
} }
if (t == List<_i5.Quote>) {
return (data as List).map((e) => deserialize<_i5.Quote>(e)).toList() as T;
}
try { try {
return _i5.Protocol().deserialize<T>(data, t); return _i6.Protocol().deserialize<T>(data, t);
} on _i1.DeserializationTypeNotFoundException catch (_) {} } on _i1.DeserializationTypeNotFoundException catch (_) {}
return super.deserialize<T>(data, t); return super.deserialize<T>(data, t);
} }
@ -79,7 +83,7 @@ class Protocol extends _i1.SerializationManager {
if (data is _i4.Quote) { if (data is _i4.Quote) {
return 'Quote'; return 'Quote';
} }
className = _i5.Protocol().getClassNameForObject(data); className = _i6.Protocol().getClassNameForObject(data);
if (className != null) { if (className != null) {
return 'serverpod_auth.$className'; return 'serverpod_auth.$className';
} }
@ -103,7 +107,7 @@ class Protocol extends _i1.SerializationManager {
} }
if (dataClassName.startsWith('serverpod_auth.')) { if (dataClassName.startsWith('serverpod_auth.')) {
data['className'] = dataClassName.substring(15); data['className'] = dataClassName.substring(15);
return _i5.Protocol().deserializeByClassName(data); return _i6.Protocol().deserializeByClassName(data);
} }
return super.deserializeByClassName(data); return super.deserializeByClassName(data);
} }

View file

@ -6,6 +6,10 @@
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
#include <file_selector_linux/file_selector_plugin.h>
void fl_register_plugins(FlPluginRegistry* registry) { void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
} }

View file

@ -3,6 +3,7 @@
# #
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
file_selector_linux
) )
list(APPEND FLUTTER_FFI_PLUGIN_LIST list(APPEND FLUTTER_FFI_PLUGIN_LIST

View file

@ -6,9 +6,19 @@ import FlutterMacOS
import Foundation import Foundation
import connectivity_plus import connectivity_plus
import file_picker
import file_selector_macos
import location import location
import path_provider_foundation
import shared_preferences_foundation
import sqflite_darwin
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin")) ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin"))
FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin"))
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin")) LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
} }

View file

@ -7,8 +7,11 @@
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
#include <connectivity_plus/connectivity_plus_windows_plugin.h> #include <connectivity_plus/connectivity_plus_windows_plugin.h>
#include <file_selector_windows/file_selector_windows.h>
void RegisterPlugins(flutter::PluginRegistry* registry) { void RegisterPlugins(flutter::PluginRegistry* registry) {
ConnectivityPlusWindowsPluginRegisterWithRegistrar( ConnectivityPlusWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin"));
FileSelectorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FileSelectorWindows"));
} }

View file

@ -4,6 +4,7 @@
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
connectivity_plus connectivity_plus
file_selector_windows
) )
list(APPEND FLUTTER_FFI_PLUGIN_LIST list(APPEND FLUTTER_FFI_PLUGIN_LIST

View file

@ -11,7 +11,10 @@
// ignore_for_file: no_leading_underscores_for_library_prefixes // ignore_for_file: no_leading_underscores_for_library_prefixes
import 'package:serverpod/serverpod.dart' as _i1; import 'package:serverpod/serverpod.dart' as _i1;
import '../greeting_endpoint.dart' as _i2; import '../greeting_endpoint.dart' as _i2;
import 'package:serverpod_auth_server/serverpod_auth_server.dart' as _i3; import '../quotes/quotes_endpoint.dart' as _i3;
import 'package:wien_talks_server/src/generated/quotes/create_quote.dart'
as _i4;
import 'package:serverpod_auth_server/serverpod_auth_server.dart' as _i5;
class Endpoints extends _i1.EndpointDispatch { class Endpoints extends _i1.EndpointDispatch {
@override @override
@ -22,7 +25,13 @@ class Endpoints extends _i1.EndpointDispatch {
server, server,
'greeting', 'greeting',
null, null,
) ),
'quote': _i3.QuoteEndpoint()
..initialize(
server,
'quote',
null,
),
}; };
connectors['greeting'] = _i1.EndpointConnector( connectors['greeting'] = _i1.EndpointConnector(
name: 'greeting', name: 'greeting',
@ -48,6 +57,57 @@ class Endpoints extends _i1.EndpointDispatch {
) )
}, },
); );
modules['serverpod_auth'] = _i3.Endpoints()..initializeEndpoints(server); connectors['quote'] = _i1.EndpointConnector(
name: 'quote',
endpoint: endpoints['quote']!,
methodConnectors: {
'createQuote': _i1.MethodConnector(
name: 'createQuote',
params: {
'req': _i1.ParameterDescription(
name: 'req',
type: _i1.getType<_i4.CreateQuoteRequest>(),
nullable: false,
)
},
call: (
_i1.Session session,
Map<String, dynamic> params,
) async =>
(endpoints['quote'] as _i3.QuoteEndpoint).createQuote(
session,
params['req'],
),
),
'getQuoteById': _i1.MethodConnector(
name: 'getQuoteById',
params: {
'id': _i1.ParameterDescription(
name: 'id',
type: _i1.getType<int>(),
nullable: false,
)
},
call: (
_i1.Session session,
Map<String, dynamic> params,
) async =>
(endpoints['quote'] as _i3.QuoteEndpoint).getQuoteById(
session,
params['id'],
),
),
'getAllQuotes': _i1.MethodConnector(
name: 'getAllQuotes',
params: {},
call: (
_i1.Session session,
Map<String, dynamic> params,
) async =>
(endpoints['quote'] as _i3.QuoteEndpoint).getAllQuotes(session),
),
},
);
modules['serverpod_auth'] = _i5.Endpoints()..initializeEndpoints(server);
} }
} }

View file

@ -15,6 +15,7 @@ import 'package:serverpod_auth_server/serverpod_auth_server.dart' as _i3;
import 'greeting.dart' as _i4; import 'greeting.dart' as _i4;
import 'quotes/create_quote.dart' as _i5; import 'quotes/create_quote.dart' as _i5;
import 'quotes/quote.dart' as _i6; import 'quotes/quote.dart' as _i6;
import 'package:wien_talks_server/src/generated/quotes/quote.dart' as _i7;
export 'greeting.dart'; export 'greeting.dart';
export 'quotes/create_quote.dart'; export 'quotes/create_quote.dart';
export 'quotes/quote.dart'; export 'quotes/quote.dart';
@ -157,6 +158,9 @@ class Protocol extends _i1.SerializationManagerServer {
? (data as List).map((e) => deserialize<String>(e)).toList() ? (data as List).map((e) => deserialize<String>(e)).toList()
: null) as T; : null) as T;
} }
if (t == List<_i7.Quote>) {
return (data as List).map((e) => deserialize<_i7.Quote>(e)).toList() as T;
}
try { try {
return _i3.Protocol().deserialize<T>(data, t); return _i3.Protocol().deserialize<T>(data, t);
} on _i1.DeserializationTypeNotFoundException catch (_) {} } on _i1.DeserializationTypeNotFoundException catch (_) {}

View file

@ -1,2 +1,6 @@
greeting: greeting:
- hello: - hello:
quote:
- createQuote:
- getQuoteById:
- getAllQuotes:

View file

@ -3,7 +3,7 @@ import 'package:wien_talks_server/src/generated/protocol.dart';
import 'package:wien_talks_server/src/quotes/quote_controller.dart'; import 'package:wien_talks_server/src/quotes/quote_controller.dart';
class QuoteEndpoint extends Endpoint { class QuoteEndpoint extends Endpoint {
Future<Quote> create(Session session, CreateQuoteRequest req) async { Future<Quote> createQuote(Session session, CreateQuoteRequest req) async {
final authInfo = await session.authenticated; final authInfo = await session.authenticated;
final userId = authInfo?.userId; final userId = authInfo?.userId;
@ -40,4 +40,23 @@ class QuoteEndpoint extends Endpoint {
throw Exception('Quote not found'); throw Exception('Quote not found');
} }
// Only for dev
Future<List<Quote>> getAllQuotes(Session session) async {
final quotes = await Quote.db.find(session);
return quotes;
}
Stream streamAllQuotes(
StreamingSession session, {
int limit = 200,
}) async* {
if (limit <= 0 || limit > 500) limit = 200;
final quoteStream = session.messages.createStream('quotes');
await for (final Quote quote in quoteStream) {
yield quote;
}
}
} }

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,394 @@
BEGIN;
--
-- Class Quote as table quote
--
CREATE TABLE "quote" (
"id" bigserial PRIMARY KEY,
"userId" bigint NOT NULL,
"text" text NOT NULL,
"authorName" text,
"lat" double precision NOT NULL,
"long" double precision NOT NULL,
"createdAt" timestamp without time zone NOT NULL,
"visibility" bigint NOT NULL,
"upvotes" bigint NOT NULL,
"downvotes" bigint NOT NULL,
"tags" json
);
--
-- Class CloudStorageEntry as table serverpod_cloud_storage
--
CREATE TABLE "serverpod_cloud_storage" (
"id" bigserial PRIMARY KEY,
"storageId" text NOT NULL,
"path" text NOT NULL,
"addedTime" timestamp without time zone NOT NULL,
"expiration" timestamp without time zone,
"byteData" bytea NOT NULL,
"verified" boolean NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_cloud_storage_path_idx" ON "serverpod_cloud_storage" USING btree ("storageId", "path");
CREATE INDEX "serverpod_cloud_storage_expiration" ON "serverpod_cloud_storage" USING btree ("expiration");
--
-- Class CloudStorageDirectUploadEntry as table serverpod_cloud_storage_direct_upload
--
CREATE TABLE "serverpod_cloud_storage_direct_upload" (
"id" bigserial PRIMARY KEY,
"storageId" text NOT NULL,
"path" text NOT NULL,
"expiration" timestamp without time zone NOT NULL,
"authKey" text NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_cloud_storage_direct_upload_storage_path" ON "serverpod_cloud_storage_direct_upload" USING btree ("storageId", "path");
--
-- Class FutureCallEntry as table serverpod_future_call
--
CREATE TABLE "serverpod_future_call" (
"id" bigserial PRIMARY KEY,
"name" text NOT NULL,
"time" timestamp without time zone NOT NULL,
"serializedObject" text,
"serverId" text NOT NULL,
"identifier" text
);
-- Indexes
CREATE INDEX "serverpod_future_call_time_idx" ON "serverpod_future_call" USING btree ("time");
CREATE INDEX "serverpod_future_call_serverId_idx" ON "serverpod_future_call" USING btree ("serverId");
CREATE INDEX "serverpod_future_call_identifier_idx" ON "serverpod_future_call" USING btree ("identifier");
--
-- Class ServerHealthConnectionInfo as table serverpod_health_connection_info
--
CREATE TABLE "serverpod_health_connection_info" (
"id" bigserial PRIMARY KEY,
"serverId" text NOT NULL,
"timestamp" timestamp without time zone NOT NULL,
"active" bigint NOT NULL,
"closing" bigint NOT NULL,
"idle" bigint NOT NULL,
"granularity" bigint NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_health_connection_info_timestamp_idx" ON "serverpod_health_connection_info" USING btree ("timestamp", "serverId", "granularity");
--
-- Class ServerHealthMetric as table serverpod_health_metric
--
CREATE TABLE "serverpod_health_metric" (
"id" bigserial PRIMARY KEY,
"name" text NOT NULL,
"serverId" text NOT NULL,
"timestamp" timestamp without time zone NOT NULL,
"isHealthy" boolean NOT NULL,
"value" double precision NOT NULL,
"granularity" bigint NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_health_metric_timestamp_idx" ON "serverpod_health_metric" USING btree ("timestamp", "serverId", "name", "granularity");
--
-- Class LogEntry as table serverpod_log
--
CREATE TABLE "serverpod_log" (
"id" bigserial PRIMARY KEY,
"sessionLogId" bigint NOT NULL,
"messageId" bigint,
"reference" text,
"serverId" text NOT NULL,
"time" timestamp without time zone NOT NULL,
"logLevel" bigint NOT NULL,
"message" text NOT NULL,
"error" text,
"stackTrace" text,
"order" bigint NOT NULL
);
-- Indexes
CREATE INDEX "serverpod_log_sessionLogId_idx" ON "serverpod_log" USING btree ("sessionLogId");
--
-- Class MessageLogEntry as table serverpod_message_log
--
CREATE TABLE "serverpod_message_log" (
"id" bigserial PRIMARY KEY,
"sessionLogId" bigint NOT NULL,
"serverId" text NOT NULL,
"messageId" bigint NOT NULL,
"endpoint" text NOT NULL,
"messageName" text NOT NULL,
"duration" double precision NOT NULL,
"error" text,
"stackTrace" text,
"slow" boolean NOT NULL,
"order" bigint NOT NULL
);
--
-- Class MethodInfo as table serverpod_method
--
CREATE TABLE "serverpod_method" (
"id" bigserial PRIMARY KEY,
"endpoint" text NOT NULL,
"method" text NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_method_endpoint_method_idx" ON "serverpod_method" USING btree ("endpoint", "method");
--
-- Class DatabaseMigrationVersion as table serverpod_migrations
--
CREATE TABLE "serverpod_migrations" (
"id" bigserial PRIMARY KEY,
"module" text NOT NULL,
"version" text NOT NULL,
"timestamp" timestamp without time zone
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_migrations_ids" ON "serverpod_migrations" USING btree ("module");
--
-- Class QueryLogEntry as table serverpod_query_log
--
CREATE TABLE "serverpod_query_log" (
"id" bigserial PRIMARY KEY,
"serverId" text NOT NULL,
"sessionLogId" bigint NOT NULL,
"messageId" bigint,
"query" text NOT NULL,
"duration" double precision NOT NULL,
"numRows" bigint,
"error" text,
"stackTrace" text,
"slow" boolean NOT NULL,
"order" bigint NOT NULL
);
-- Indexes
CREATE INDEX "serverpod_query_log_sessionLogId_idx" ON "serverpod_query_log" USING btree ("sessionLogId");
--
-- Class ReadWriteTestEntry as table serverpod_readwrite_test
--
CREATE TABLE "serverpod_readwrite_test" (
"id" bigserial PRIMARY KEY,
"number" bigint NOT NULL
);
--
-- Class RuntimeSettings as table serverpod_runtime_settings
--
CREATE TABLE "serverpod_runtime_settings" (
"id" bigserial PRIMARY KEY,
"logSettings" json NOT NULL,
"logSettingsOverrides" json NOT NULL,
"logServiceCalls" boolean NOT NULL,
"logMalformedCalls" boolean NOT NULL
);
--
-- Class SessionLogEntry as table serverpod_session_log
--
CREATE TABLE "serverpod_session_log" (
"id" bigserial PRIMARY KEY,
"serverId" text NOT NULL,
"time" timestamp without time zone NOT NULL,
"module" text,
"endpoint" text,
"method" text,
"duration" double precision,
"numQueries" bigint,
"slow" boolean,
"error" text,
"stackTrace" text,
"authenticatedUserId" bigint,
"isOpen" boolean,
"touched" timestamp without time zone NOT NULL
);
-- Indexes
CREATE INDEX "serverpod_session_log_serverid_idx" ON "serverpod_session_log" USING btree ("serverId");
CREATE INDEX "serverpod_session_log_touched_idx" ON "serverpod_session_log" USING btree ("touched");
CREATE INDEX "serverpod_session_log_isopen_idx" ON "serverpod_session_log" USING btree ("isOpen");
--
-- Class AuthKey as table serverpod_auth_key
--
CREATE TABLE "serverpod_auth_key" (
"id" bigserial PRIMARY KEY,
"userId" bigint NOT NULL,
"hash" text NOT NULL,
"scopeNames" json NOT NULL,
"method" text NOT NULL
);
-- Indexes
CREATE INDEX "serverpod_auth_key_userId_idx" ON "serverpod_auth_key" USING btree ("userId");
--
-- Class EmailAuth as table serverpod_email_auth
--
CREATE TABLE "serverpod_email_auth" (
"id" bigserial PRIMARY KEY,
"userId" bigint NOT NULL,
"email" text NOT NULL,
"hash" text NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_email_auth_email" ON "serverpod_email_auth" USING btree ("email");
--
-- Class EmailCreateAccountRequest as table serverpod_email_create_request
--
CREATE TABLE "serverpod_email_create_request" (
"id" bigserial PRIMARY KEY,
"userName" text NOT NULL,
"email" text NOT NULL,
"hash" text NOT NULL,
"verificationCode" text NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_email_auth_create_account_request_idx" ON "serverpod_email_create_request" USING btree ("email");
--
-- Class EmailFailedSignIn as table serverpod_email_failed_sign_in
--
CREATE TABLE "serverpod_email_failed_sign_in" (
"id" bigserial PRIMARY KEY,
"email" text NOT NULL,
"time" timestamp without time zone NOT NULL,
"ipAddress" text NOT NULL
);
-- Indexes
CREATE INDEX "serverpod_email_failed_sign_in_email_idx" ON "serverpod_email_failed_sign_in" USING btree ("email");
CREATE INDEX "serverpod_email_failed_sign_in_time_idx" ON "serverpod_email_failed_sign_in" USING btree ("time");
--
-- Class EmailReset as table serverpod_email_reset
--
CREATE TABLE "serverpod_email_reset" (
"id" bigserial PRIMARY KEY,
"userId" bigint NOT NULL,
"verificationCode" text NOT NULL,
"expiration" timestamp without time zone NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_email_reset_verification_idx" ON "serverpod_email_reset" USING btree ("verificationCode");
--
-- Class GoogleRefreshToken as table serverpod_google_refresh_token
--
CREATE TABLE "serverpod_google_refresh_token" (
"id" bigserial PRIMARY KEY,
"userId" bigint NOT NULL,
"refreshToken" text NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_google_refresh_token_userId_idx" ON "serverpod_google_refresh_token" USING btree ("userId");
--
-- Class UserImage as table serverpod_user_image
--
CREATE TABLE "serverpod_user_image" (
"id" bigserial PRIMARY KEY,
"userId" bigint NOT NULL,
"version" bigint NOT NULL,
"url" text NOT NULL
);
-- Indexes
CREATE INDEX "serverpod_user_image_user_id" ON "serverpod_user_image" USING btree ("userId", "version");
--
-- Class UserInfo as table serverpod_user_info
--
CREATE TABLE "serverpod_user_info" (
"id" bigserial PRIMARY KEY,
"userIdentifier" text NOT NULL,
"userName" text,
"fullName" text,
"email" text,
"created" timestamp without time zone NOT NULL,
"imageUrl" text,
"scopeNames" json NOT NULL,
"blocked" boolean NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_user_info_user_identifier" ON "serverpod_user_info" USING btree ("userIdentifier");
CREATE INDEX "serverpod_user_info_email" ON "serverpod_user_info" USING btree ("email");
--
-- Foreign relations for "serverpod_log" table
--
ALTER TABLE ONLY "serverpod_log"
ADD CONSTRAINT "serverpod_log_fk_0"
FOREIGN KEY("sessionLogId")
REFERENCES "serverpod_session_log"("id")
ON DELETE CASCADE
ON UPDATE NO ACTION;
--
-- Foreign relations for "serverpod_message_log" table
--
ALTER TABLE ONLY "serverpod_message_log"
ADD CONSTRAINT "serverpod_message_log_fk_0"
FOREIGN KEY("sessionLogId")
REFERENCES "serverpod_session_log"("id")
ON DELETE CASCADE
ON UPDATE NO ACTION;
--
-- Foreign relations for "serverpod_query_log" table
--
ALTER TABLE ONLY "serverpod_query_log"
ADD CONSTRAINT "serverpod_query_log_fk_0"
FOREIGN KEY("sessionLogId")
REFERENCES "serverpod_session_log"("id")
ON DELETE CASCADE
ON UPDATE NO ACTION;
--
-- MIGRATION VERSION FOR wien_talks
--
INSERT INTO "serverpod_migrations" ("module", "version", "timestamp")
VALUES ('wien_talks', '20250816122625449', now())
ON CONFLICT ("module")
DO UPDATE SET "version" = '20250816122625449', "timestamp" = now();
--
-- MIGRATION VERSION FOR serverpod
--
INSERT INTO "serverpod_migrations" ("module", "version", "timestamp")
VALUES ('serverpod', '20240516151843329', now())
ON CONFLICT ("module")
DO UPDATE SET "version" = '20240516151843329', "timestamp" = now();
--
-- MIGRATION VERSION FOR serverpod_auth
--
INSERT INTO "serverpod_migrations" ("module", "version", "timestamp")
VALUES ('serverpod_auth', '20240520102713718', now())
ON CONFLICT ("module")
DO UPDATE SET "version" = '20240520102713718', "timestamp" = now();
COMMIT;

View file

@ -0,0 +1,107 @@
{
"moduleName": "wien_talks",
"tables": [
{
"name": "quote",
"dartName": "Quote",
"module": "wien_talks",
"schema": "public",
"columns": [
{
"name": "id",
"columnType": 6,
"isNullable": false,
"columnDefault": "nextval('quote_id_seq'::regclass)",
"dartType": "int?"
},
{
"name": "userId",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "text",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"name": "authorName",
"columnType": 0,
"isNullable": true,
"dartType": "String?"
},
{
"name": "lat",
"columnType": 3,
"isNullable": false,
"dartType": "double"
},
{
"name": "long",
"columnType": 3,
"isNullable": false,
"dartType": "double"
},
{
"name": "createdAt",
"columnType": 4,
"isNullable": false,
"dartType": "DateTime"
},
{
"name": "visibility",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "upvotes",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "downvotes",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "tags",
"columnType": 8,
"isNullable": true,
"dartType": "List<String>?"
}
],
"foreignKeys": [],
"indexes": [
{
"indexName": "quote_pkey",
"elements": [
{
"type": 0,
"definition": "id"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": true
}
],
"managed": true
}
],
"installedModules": [
{
"module": "serverpod",
"version": "20240516151843329"
},
{
"module": "serverpod_auth",
"version": "20240520102713718"
}
],
"migrationApiVersion": 1
}

View file

@ -0,0 +1,676 @@
{
"actions": [
{
"type": "createTable",
"createTable": {
"name": "quote",
"dartName": "Quote",
"module": "wien_talks",
"schema": "public",
"columns": [
{
"name": "id",
"columnType": 6,
"isNullable": false,
"columnDefault": "nextval('quote_id_seq'::regclass)",
"dartType": "int?"
},
{
"name": "userId",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "text",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"name": "authorName",
"columnType": 0,
"isNullable": true,
"dartType": "String?"
},
{
"name": "lat",
"columnType": 3,
"isNullable": false,
"dartType": "double"
},
{
"name": "long",
"columnType": 3,
"isNullable": false,
"dartType": "double"
},
{
"name": "createdAt",
"columnType": 4,
"isNullable": false,
"dartType": "DateTime"
},
{
"name": "visibility",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "upvotes",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "downvotes",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "tags",
"columnType": 8,
"isNullable": true,
"dartType": "List<String>?"
}
],
"foreignKeys": [],
"indexes": [
{
"indexName": "quote_pkey",
"elements": [
{
"type": 0,
"definition": "id"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": true
}
],
"managed": true
}
},
{
"type": "createTable",
"createTable": {
"name": "serverpod_auth_key",
"dartName": "AuthKey",
"module": "serverpod_auth",
"schema": "public",
"columns": [
{
"name": "id",
"columnType": 6,
"isNullable": false,
"columnDefault": "nextval('serverpod_auth_key_id_seq'::regclass)",
"dartType": "int?"
},
{
"name": "userId",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "hash",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"name": "scopeNames",
"columnType": 8,
"isNullable": false,
"dartType": "List<String>"
},
{
"name": "method",
"columnType": 0,
"isNullable": false,
"dartType": "String"
}
],
"foreignKeys": [],
"indexes": [
{
"indexName": "serverpod_auth_key_pkey",
"elements": [
{
"type": 0,
"definition": "id"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": true
},
{
"indexName": "serverpod_auth_key_userId_idx",
"elements": [
{
"type": 0,
"definition": "userId"
}
],
"type": "btree",
"isUnique": false,
"isPrimary": false
}
],
"managed": true
}
},
{
"type": "createTable",
"createTable": {
"name": "serverpod_email_auth",
"dartName": "EmailAuth",
"module": "serverpod_auth",
"schema": "public",
"columns": [
{
"name": "id",
"columnType": 6,
"isNullable": false,
"columnDefault": "nextval('serverpod_email_auth_id_seq'::regclass)",
"dartType": "int?"
},
{
"name": "userId",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "email",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"name": "hash",
"columnType": 0,
"isNullable": false,
"dartType": "String"
}
],
"foreignKeys": [],
"indexes": [
{
"indexName": "serverpod_email_auth_pkey",
"elements": [
{
"type": 0,
"definition": "id"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": true
},
{
"indexName": "serverpod_email_auth_email",
"elements": [
{
"type": 0,
"definition": "email"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": false
}
],
"managed": true
}
},
{
"type": "createTable",
"createTable": {
"name": "serverpod_email_create_request",
"dartName": "EmailCreateAccountRequest",
"module": "serverpod_auth",
"schema": "public",
"columns": [
{
"name": "id",
"columnType": 6,
"isNullable": false,
"columnDefault": "nextval('serverpod_email_create_request_id_seq'::regclass)",
"dartType": "int?"
},
{
"name": "userName",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"name": "email",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"name": "hash",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"name": "verificationCode",
"columnType": 0,
"isNullable": false,
"dartType": "String"
}
],
"foreignKeys": [],
"indexes": [
{
"indexName": "serverpod_email_create_request_pkey",
"elements": [
{
"type": 0,
"definition": "id"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": true
},
{
"indexName": "serverpod_email_auth_create_account_request_idx",
"elements": [
{
"type": 0,
"definition": "email"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": false
}
],
"managed": true
}
},
{
"type": "createTable",
"createTable": {
"name": "serverpod_email_failed_sign_in",
"dartName": "EmailFailedSignIn",
"module": "serverpod_auth",
"schema": "public",
"columns": [
{
"name": "id",
"columnType": 6,
"isNullable": false,
"columnDefault": "nextval('serverpod_email_failed_sign_in_id_seq'::regclass)",
"dartType": "int?"
},
{
"name": "email",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"name": "time",
"columnType": 4,
"isNullable": false,
"dartType": "DateTime"
},
{
"name": "ipAddress",
"columnType": 0,
"isNullable": false,
"dartType": "String"
}
],
"foreignKeys": [],
"indexes": [
{
"indexName": "serverpod_email_failed_sign_in_pkey",
"elements": [
{
"type": 0,
"definition": "id"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": true
},
{
"indexName": "serverpod_email_failed_sign_in_email_idx",
"elements": [
{
"type": 0,
"definition": "email"
}
],
"type": "btree",
"isUnique": false,
"isPrimary": false
},
{
"indexName": "serverpod_email_failed_sign_in_time_idx",
"elements": [
{
"type": 0,
"definition": "time"
}
],
"type": "btree",
"isUnique": false,
"isPrimary": false
}
],
"managed": true
}
},
{
"type": "createTable",
"createTable": {
"name": "serverpod_email_reset",
"dartName": "EmailReset",
"module": "serverpod_auth",
"schema": "public",
"columns": [
{
"name": "id",
"columnType": 6,
"isNullable": false,
"columnDefault": "nextval('serverpod_email_reset_id_seq'::regclass)",
"dartType": "int?"
},
{
"name": "userId",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "verificationCode",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"name": "expiration",
"columnType": 4,
"isNullable": false,
"dartType": "DateTime"
}
],
"foreignKeys": [],
"indexes": [
{
"indexName": "serverpod_email_reset_pkey",
"elements": [
{
"type": 0,
"definition": "id"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": true
},
{
"indexName": "serverpod_email_reset_verification_idx",
"elements": [
{
"type": 0,
"definition": "verificationCode"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": false
}
],
"managed": true
}
},
{
"type": "createTable",
"createTable": {
"name": "serverpod_google_refresh_token",
"dartName": "GoogleRefreshToken",
"module": "serverpod_auth",
"schema": "public",
"columns": [
{
"name": "id",
"columnType": 6,
"isNullable": false,
"columnDefault": "nextval('serverpod_google_refresh_token_id_seq'::regclass)",
"dartType": "int?"
},
{
"name": "userId",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "refreshToken",
"columnType": 0,
"isNullable": false,
"dartType": "String"
}
],
"foreignKeys": [],
"indexes": [
{
"indexName": "serverpod_google_refresh_token_pkey",
"elements": [
{
"type": 0,
"definition": "id"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": true
},
{
"indexName": "serverpod_google_refresh_token_userId_idx",
"elements": [
{
"type": 0,
"definition": "userId"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": false
}
],
"managed": true
}
},
{
"type": "createTable",
"createTable": {
"name": "serverpod_user_image",
"dartName": "UserImage",
"module": "serverpod_auth",
"schema": "public",
"columns": [
{
"name": "id",
"columnType": 6,
"isNullable": false,
"columnDefault": "nextval('serverpod_user_image_id_seq'::regclass)",
"dartType": "int?"
},
{
"name": "userId",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "version",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"name": "url",
"columnType": 0,
"isNullable": false,
"dartType": "String"
}
],
"foreignKeys": [],
"indexes": [
{
"indexName": "serverpod_user_image_pkey",
"elements": [
{
"type": 0,
"definition": "id"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": true
},
{
"indexName": "serverpod_user_image_user_id",
"elements": [
{
"type": 0,
"definition": "userId"
},
{
"type": 0,
"definition": "version"
}
],
"type": "btree",
"isUnique": false,
"isPrimary": false
}
],
"managed": true
}
},
{
"type": "createTable",
"createTable": {
"name": "serverpod_user_info",
"dartName": "UserInfo",
"module": "serverpod_auth",
"schema": "public",
"columns": [
{
"name": "id",
"columnType": 6,
"isNullable": false,
"columnDefault": "nextval('serverpod_user_info_id_seq'::regclass)",
"dartType": "int?"
},
{
"name": "userIdentifier",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"name": "userName",
"columnType": 0,
"isNullable": true,
"dartType": "String?"
},
{
"name": "fullName",
"columnType": 0,
"isNullable": true,
"dartType": "String?"
},
{
"name": "email",
"columnType": 0,
"isNullable": true,
"dartType": "String?"
},
{
"name": "created",
"columnType": 4,
"isNullable": false,
"dartType": "DateTime"
},
{
"name": "imageUrl",
"columnType": 0,
"isNullable": true,
"dartType": "String?"
},
{
"name": "scopeNames",
"columnType": 8,
"isNullable": false,
"dartType": "List<String>"
},
{
"name": "blocked",
"columnType": 1,
"isNullable": false,
"dartType": "bool"
}
],
"foreignKeys": [],
"indexes": [
{
"indexName": "serverpod_user_info_pkey",
"elements": [
{
"type": 0,
"definition": "id"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": true
},
{
"indexName": "serverpod_user_info_user_identifier",
"elements": [
{
"type": 0,
"definition": "userIdentifier"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": false
},
{
"indexName": "serverpod_user_info_email",
"elements": [
{
"type": 0,
"definition": "email"
}
],
"type": "btree",
"isUnique": false,
"isPrimary": false
}
],
"managed": true
}
}
],
"warnings": [],
"migrationApiVersion": 1
}

View file

@ -0,0 +1,158 @@
BEGIN;
--
-- ACTION CREATE TABLE
--
CREATE TABLE "quote" (
"id" bigserial PRIMARY KEY,
"userId" bigint NOT NULL,
"text" text NOT NULL,
"authorName" text,
"lat" double precision NOT NULL,
"long" double precision NOT NULL,
"createdAt" timestamp without time zone NOT NULL,
"visibility" bigint NOT NULL,
"upvotes" bigint NOT NULL,
"downvotes" bigint NOT NULL,
"tags" json
);
--
-- ACTION CREATE TABLE
--
CREATE TABLE "serverpod_auth_key" (
"id" bigserial PRIMARY KEY,
"userId" bigint NOT NULL,
"hash" text NOT NULL,
"scopeNames" json NOT NULL,
"method" text NOT NULL
);
-- Indexes
CREATE INDEX "serverpod_auth_key_userId_idx" ON "serverpod_auth_key" USING btree ("userId");
--
-- ACTION CREATE TABLE
--
CREATE TABLE "serverpod_email_auth" (
"id" bigserial PRIMARY KEY,
"userId" bigint NOT NULL,
"email" text NOT NULL,
"hash" text NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_email_auth_email" ON "serverpod_email_auth" USING btree ("email");
--
-- ACTION CREATE TABLE
--
CREATE TABLE "serverpod_email_create_request" (
"id" bigserial PRIMARY KEY,
"userName" text NOT NULL,
"email" text NOT NULL,
"hash" text NOT NULL,
"verificationCode" text NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_email_auth_create_account_request_idx" ON "serverpod_email_create_request" USING btree ("email");
--
-- ACTION CREATE TABLE
--
CREATE TABLE "serverpod_email_failed_sign_in" (
"id" bigserial PRIMARY KEY,
"email" text NOT NULL,
"time" timestamp without time zone NOT NULL,
"ipAddress" text NOT NULL
);
-- Indexes
CREATE INDEX "serverpod_email_failed_sign_in_email_idx" ON "serverpod_email_failed_sign_in" USING btree ("email");
CREATE INDEX "serverpod_email_failed_sign_in_time_idx" ON "serverpod_email_failed_sign_in" USING btree ("time");
--
-- ACTION CREATE TABLE
--
CREATE TABLE "serverpod_email_reset" (
"id" bigserial PRIMARY KEY,
"userId" bigint NOT NULL,
"verificationCode" text NOT NULL,
"expiration" timestamp without time zone NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_email_reset_verification_idx" ON "serverpod_email_reset" USING btree ("verificationCode");
--
-- ACTION CREATE TABLE
--
CREATE TABLE "serverpod_google_refresh_token" (
"id" bigserial PRIMARY KEY,
"userId" bigint NOT NULL,
"refreshToken" text NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_google_refresh_token_userId_idx" ON "serverpod_google_refresh_token" USING btree ("userId");
--
-- ACTION CREATE TABLE
--
CREATE TABLE "serverpod_user_image" (
"id" bigserial PRIMARY KEY,
"userId" bigint NOT NULL,
"version" bigint NOT NULL,
"url" text NOT NULL
);
-- Indexes
CREATE INDEX "serverpod_user_image_user_id" ON "serverpod_user_image" USING btree ("userId", "version");
--
-- ACTION CREATE TABLE
--
CREATE TABLE "serverpod_user_info" (
"id" bigserial PRIMARY KEY,
"userIdentifier" text NOT NULL,
"userName" text,
"fullName" text,
"email" text,
"created" timestamp without time zone NOT NULL,
"imageUrl" text,
"scopeNames" json NOT NULL,
"blocked" boolean NOT NULL
);
-- Indexes
CREATE UNIQUE INDEX "serverpod_user_info_user_identifier" ON "serverpod_user_info" USING btree ("userIdentifier");
CREATE INDEX "serverpod_user_info_email" ON "serverpod_user_info" USING btree ("email");
--
-- MIGRATION VERSION FOR wien_talks
--
INSERT INTO "serverpod_migrations" ("module", "version", "timestamp")
VALUES ('wien_talks', '20250816122625449', now())
ON CONFLICT ("module")
DO UPDATE SET "version" = '20250816122625449', "timestamp" = now();
--
-- MIGRATION VERSION FOR serverpod
--
INSERT INTO "serverpod_migrations" ("module", "version", "timestamp")
VALUES ('serverpod', '20240516151843329', now())
ON CONFLICT ("module")
DO UPDATE SET "version" = '20240516151843329', "timestamp" = now();
--
-- MIGRATION VERSION FOR serverpod_auth
--
INSERT INTO "serverpod_migrations" ("module", "version", "timestamp")
VALUES ('serverpod_auth', '20240520102713718', now())
ON CONFLICT ("module")
DO UPDATE SET "version" = '20240520102713718', "timestamp" = now();
COMMIT;

View file

@ -5,3 +5,4 @@
### the conflict by removing and recreating the conflicting migration. ### the conflict by removing and recreating the conflicting migration.
20250816095813247 20250816095813247
20250816122625449

View file

@ -15,6 +15,9 @@ import 'package:serverpod_test/serverpod_test.dart' as _i1;
import 'package:serverpod/serverpod.dart' as _i2; import 'package:serverpod/serverpod.dart' as _i2;
import 'dart:async' as _i3; import 'dart:async' as _i3;
import 'package:wien_talks_server/src/generated/greeting.dart' as _i4; import 'package:wien_talks_server/src/generated/greeting.dart' as _i4;
import 'package:wien_talks_server/src/generated/quotes/quote.dart' as _i5;
import 'package:wien_talks_server/src/generated/quotes/create_quote.dart'
as _i6;
import 'package:wien_talks_server/src/generated/protocol.dart'; import 'package:wien_talks_server/src/generated/protocol.dart';
import 'package:wien_talks_server/src/generated/endpoints.dart'; import 'package:wien_talks_server/src/generated/endpoints.dart';
export 'package:serverpod_test/serverpod_test_public_exports.dart'; export 'package:serverpod_test/serverpod_test_public_exports.dart';
@ -102,6 +105,8 @@ void withServerpod(
class TestEndpoints { class TestEndpoints {
late final _GreetingEndpoint greeting; late final _GreetingEndpoint greeting;
late final _QuoteEndpoint quote;
} }
class _InternalTestEndpoints extends TestEndpoints class _InternalTestEndpoints extends TestEndpoints
@ -115,6 +120,10 @@ class _InternalTestEndpoints extends TestEndpoints
endpoints, endpoints,
serializationManager, serializationManager,
); );
quote = _QuoteEndpoint(
endpoints,
serializationManager,
);
} }
} }
@ -157,3 +166,99 @@ class _GreetingEndpoint {
}); });
} }
} }
class _QuoteEndpoint {
_QuoteEndpoint(
this._endpointDispatch,
this._serializationManager,
);
final _i2.EndpointDispatch _endpointDispatch;
final _i2.SerializationManager _serializationManager;
_i3.Future<_i5.Quote> createQuote(
_i1.TestSessionBuilder sessionBuilder,
_i6.CreateQuoteRequest req,
) async {
return _i1.callAwaitableFunctionAndHandleExceptions(() async {
var _localUniqueSession =
(sessionBuilder as _i1.InternalTestSessionBuilder).internalBuild(
endpoint: 'quote',
method: 'createQuote',
);
try {
var _localCallContext = await _endpointDispatch.getMethodCallContext(
createSessionCallback: (_) => _localUniqueSession,
endpointPath: 'quote',
methodName: 'createQuote',
parameters: _i1.testObjectToJson({'req': req}),
serializationManager: _serializationManager,
);
var _localReturnValue = await (_localCallContext.method.call(
_localUniqueSession,
_localCallContext.arguments,
) as _i3.Future<_i5.Quote>);
return _localReturnValue;
} finally {
await _localUniqueSession.close();
}
});
}
_i3.Future<_i5.Quote> getQuoteById(
_i1.TestSessionBuilder sessionBuilder,
int id,
) async {
return _i1.callAwaitableFunctionAndHandleExceptions(() async {
var _localUniqueSession =
(sessionBuilder as _i1.InternalTestSessionBuilder).internalBuild(
endpoint: 'quote',
method: 'getQuoteById',
);
try {
var _localCallContext = await _endpointDispatch.getMethodCallContext(
createSessionCallback: (_) => _localUniqueSession,
endpointPath: 'quote',
methodName: 'getQuoteById',
parameters: _i1.testObjectToJson({'id': id}),
serializationManager: _serializationManager,
);
var _localReturnValue = await (_localCallContext.method.call(
_localUniqueSession,
_localCallContext.arguments,
) as _i3.Future<_i5.Quote>);
return _localReturnValue;
} finally {
await _localUniqueSession.close();
}
});
}
_i3.Future<List<_i5.Quote>> getAllQuotes(
_i1.TestSessionBuilder sessionBuilder) async {
return _i1.callAwaitableFunctionAndHandleExceptions(() async {
var _localUniqueSession =
(sessionBuilder as _i1.InternalTestSessionBuilder).internalBuild(
endpoint: 'quote',
method: 'getAllQuotes',
);
try {
var _localCallContext = await _endpointDispatch.getMethodCallContext(
createSessionCallback: (_) => _localUniqueSession,
endpointPath: 'quote',
methodName: 'getAllQuotes',
parameters: _i1.testObjectToJson({}),
serializationManager: _serializationManager,
);
var _localReturnValue = await (_localCallContext.method.call(
_localUniqueSession,
_localCallContext.arguments,
) as _i3.Future<List<_i5.Quote>>);
return _localReturnValue;
} finally {
await _localUniqueSession.close();
}
});
}
}