module Memo::ServiceProvider

Overview

Internal module for service configuration CRUD operations

Users should access these operations through Service instance methods:

This module is exposed for advanced use cases where direct database access is needed.

:nodoc:

Extended Modules

Defined in:

memo/service_provider.cr

Instance Method Summary

Instance Method Detail

def count(db : DB::Database) : Int64 #

Get total count of services


[View source]
def create(db : DB::Database, name : String, format : String, model : String, dimensions : Int32, max_tokens : Int32, base_url : String | Nil = nil, is_default : Bool = false) : Info #

Create a new service configuration

If a service with the same name already exists, raises an error.

Returns the created service info.


[View source]
def delete(db : DB::Database, id : Int64, force : Bool = false) : Bool #

Delete a service

By default, fails if the service has any associated embeddings. Use force: true to delete the service and all associated data.

Returns true if deleted, false if not found. Raises if embeddings exist and force is false.


[View source]
def exists?(db : DB::Database, id : Int64) : Bool #

Check if a service exists


[View source]
def get(db : DB::Database, id : Int64) : Info | Nil #

Get a service by ID

Returns nil if not found.


[View source]
def get_by_name(db : DB::Database, name : String) : Info | Nil #

Get a service by name

Returns nil if not found.


[View source]
def get_default(db : DB::Database) : Info | Nil #

Get the default service

Returns nil if no default is set.


[View source]
def list(db : DB::Database) : Array(Info) #

List all services

Returns array of service info, ordered by creation time (newest first).


[View source]
def list_by_format(db : DB::Database, format : String) : Array(Info) #

List services by format

Returns array of service info for the specified API format.


[View source]
def set_default(db : DB::Database, name : String) : Bool #

Set a service as the default

Clears any existing default and sets the specified service. Returns true if successful, false if service not found.


[View source]
def stats(db : DB::Database, id : Int64) : Stats #

Get usage statistics for a service


[View source]
def update(db : DB::Database, id : Int64, base_url : String | Nil = nil, max_tokens : Int32 | Nil = nil) : Info | Nil #

Update a service configuration

Can update base_url and max_tokens. Other fields define the service identity. Returns the updated service info, or nil if not found.


[View source]