The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use strict;
use UR;
our $VERSION = "0.41_04"; # UR $VERSION;
UR::Object::Type->define(
class_name => __PACKAGE__,
is => [ 'UR::Namespace::Command::Define::Datasource::Rdbms' ],
);
sub help_brief {
"Add a SQLite data source to the current namespace."
}
sub help_synopsis {
return <<EOS
cd Acme
ur define datasource sqlite --dsname MyDB1
# writes Acme::DataSource::MyDB1 to work with Acme/DataSource/MyDB1.sqlite3
ur define datasource sqlite --dsname MyDB2 --server /var/lib/acmeapp/mydb2.sqlite3
# writes Acme::DataSource::MyDB2 to work with the specified sqlite file
EOS
}
sub _data_source_sub_class_name {
"UR::DataSource::SQLite"
}
sub server {
my $self = shift;
my $super_server = $self->super_can('server');
if (@_) {
# unusual case, setting the server
return $super_server($self,@_);
}
my $server = $super_server->($self);
unless ($server) {
$server = $self->data_source_module_pathname();
$server =~ s/\.pm$/.sqlite3/;
$super_server->($self,$server);
}
return $server;
}
sub _post_module_written {
my $self = shift;
# Create a new, empty DB if it dosen't exist yet
my $pathname = $self->server;
$pathname =~ s/\.pm$/.sqlite3/;
IO::File->new($pathname, O_WRONLY | O_CREAT) unless (-f $pathname);
$self->status_message("A $pathname (empty database schame)");
return 1;
}
1;