File Coverage

blib/lib/WebService/Chroma.pm
Criterion Covered Total %
statement 23 34 67.6
branch n/a
condition n/a
subroutine 8 14 57.1
pod 5 5 100.0
total 36 53 67.9


line stmt bran cond sub pod time code
1             package WebService::Chroma;
2              
3             our $VERSION = '0.08';
4              
5 1     1   132486 use 5.006;
  1         5  
6 1     1   6 use strict;
  1         2  
  1         49  
7 1     1   5 use warnings;
  1         2  
  1         75  
8              
9 1     1   746 use Moo;
  1         10140  
  1         9  
10 1     1   2548 use WebService::Chroma::UA;
  1         3  
  1         52  
11 1     1   433 use WebService::Chroma::Tenant;
  1         6  
  1         52  
12              
13 1     1   9 use MooX::ValidateSubs;
  1         2  
  1         8  
14 1     1   1087 use Types::Standard qw/Str ArrayRef HashRef/;
  1         3  
  1         31  
15              
16             validate_subs (
17             create_tenant => {
18             params => {
19             name => [Str]
20             }
21             },
22             get_tenant => {
23             params => {
24             name => [Str]
25             }
26             },
27             get_database => {
28             params => {
29             tenant => [Str],
30             name => [Str]
31             }
32             },
33             get_collection => {
34             params => {
35             tenant => [Str],
36             db => [Str],
37             name => [Str]
38             }
39             }
40             );
41              
42             has base_url => (
43             is => 'ro',
44             lazy => 1,
45             default => sub { 'http://localhost:8000' }
46             );
47              
48             has embeddings_class => (
49             is => 'ro',
50             lazy => 1,
51             );
52              
53             has embeddings_api_key => (
54             is => 'ro',
55             lazy => 1,
56             );
57              
58             has embeddings_base_url => (
59             is => 'ro',
60             lazy => 1,
61             );
62              
63             has embeddings_model => (
64             is => 'ro',
65             lazy => 1,
66             );
67              
68             has ua => (
69             is => 'ro',
70             builder => sub {
71 0     0     WebService::Chroma::UA->new(
72             base_url => $_[0]->base_url,
73             embeddings_class => $_[0]->embeddings_class,
74             embeddings_model => $_[0]->embeddings_model,
75             embeddings_base_url => $_[0]->embeddings_base_url,
76             embeddings_api_key => $_[0]->embeddings_api_key
77             );
78             }
79             );
80              
81             sub version {
82 0     0 1   my ($self) = @_;
83 0           return $self->ua->get(url => '/api/v2/version');
84             }
85              
86             sub reset {
87 0     0 1   my ($self) = @_;
88 0           return $self->ua->post(url => '/api/v2/reset');
89             }
90              
91             sub heartbeat {
92 0     0 1   my ($self) = @_;
93 0           return $self->ua->get(url => '/api/v2/heartbeat');
94             }
95              
96             sub pre_flight_checks {
97 0     0 1   my ($self) = @_;
98 0           return $self->ua->get(url => '/api/v2/pre-flight-checks');
99             }
100              
101             sub auth_identity {
102 0     0 1   my ($self) = @_;
103 0           return $self->ua->get(url => '/api/v2/auth/identity');
104             }
105              
106             sub create_tenant {
107             my ($self, %data) = @_;
108              
109             my $tenant = $self->ua->post(
110             url => '/api/v2/tenants',
111             data => \%data
112             );
113              
114             return $self->get_tenant(%data);
115             }
116              
117             sub get_tenant {
118             my ($self, %data) = @_;
119              
120             my $tenant = $self->ua->get(url => '/api/v2/tenants/' . $data{name});
121            
122             return WebService::Chroma::Tenant->new(
123             ua => $self->ua,
124             %{$tenant}
125             );
126             }
127              
128             sub get_database {
129             my ($self, %data) = @_;
130             return $self->get_tenant(name => $data{tenant})->get_database(name => $data{name});
131             }
132              
133             sub get_collection {
134             my ($self, %data) = @_;
135             return $self->get_tenant(name => $data{tenant})->get_database(name => $data{db})->get_collection(name => $data{name});
136             }
137              
138             1;
139              
140             __END__