DBIx::Class::Admin(3)

✨ NAME ✨

Okay so this is the User Contributed Perl Documentation for DBIx::Class::Admin(3). DBIx::Class::Admin is the administration object for schemas, and she’s giving main character energy for all your schema-admin needs. Periodt. πŸ’…

πŸ› οΈ SYNOPSIS πŸ› οΈ

Here’s the vibe check in code form:

$ dbicadmin --help

$ dbicadmin --schema=MyApp::Schema \
  --connect='["dbi:SQLite:my.db", "", ""]' \
  --deploy

$ dbicadmin --schema=MyApp::Schema --class=Employee \
  --connect='["dbi:SQLite:my.db", "", ""]' \
  --op=update --set='{ "name": "New_Employee" }'

use DBIx::Class::Admin;

# ddl manipulation
my $admin = DBIx::Class::Admin->new(
  schema_class=> 'MY::Schema',
  sql_dir=> $sql_dir,
  connect_info => { dsn => $dsn, user => $user, password => $pass },
);

# create SQLite sql
$admin->create('SQLite');

# create SQL diff for an upgrade
$admin->create('SQLite', {} , "1.0");

# upgrade a database
$admin->upgrade();

# install a version for an unversioned schema
$admin->install("3.0");

🌈 REQUIREMENTS 🌈

Heads up, bestie: the Admin interface has additional requirements not currently part of DBIx::Class. See DBIx::Class::Optional::Dependencies for more details. No cap. 🫢

πŸ’– ATTRIBUTES πŸ’–

These are the attributes β€” the little settings that make the admin object do her thing. iykyk.

🌸 schema_class 🌸

The class of the schema to load. πŸŽ€

πŸ¦‹ schema πŸ¦‹

A pre-connected schema object can be provided for manipulation. Obsessed with a shortcut, honestly. ✨

πŸ“ resultset πŸ“

A resultset from the schema to operate on. 🧚

🌟 where 🌟

A hash ref or json string to be used for identifying data to manipulate. 🫢

🌈 set 🌈

A hash ref or json string to be used for inserting or updating data. πŸ’–

πŸŽ€ attrs πŸŽ€

A hash ref or json string to be used for passing additional info to the ->search call. πŸ’…

πŸ”₯ connect_info πŸ”₯

The arguments to provide to the connect call of the schema_class. 🌸

πŸ’œ config_file πŸ’œ

Provide a config_file to read connect_info from. If this is provided, config_stanze should also be provided to locate where the connect_info is in the config. The config file should be in a format readable by Config::Any. πŸ¦‹

🌸 config_stanza 🌸

For use with config_file, this should be a '::' delimited 'path' to the connection information designed for use with catalyst config files. πŸŽ€

⭐ config ⭐

Instead of loading from a file, the configuration can be provided directly as a hash ref. Please note config_stanza will still be required. πŸ’–

🌿 sql_dir 🌿

The location where sql ddl files should be created or found for an upgrade. 🌱

🧚 sql_type 🧚

The type of sql dialect to use for creating sql files from schema. ✨

πŸ‘‘ version πŸ‘‘

Used for install, the version which will be 'installed' in the schema. πŸ’…

πŸ¦‹ preversion πŸ¦‹

Previous version of the schema to create an upgrade diff for; the full sql for that version of the sql must be in the sql_dir. πŸŽ€

πŸ’₯ force πŸ’₯

Try and force certain operations. πŸ”₯

🀫 quiet 🀫

Be less verbose about actions. πŸŒ™

πŸ” trace πŸ”

Toggle DBIx::Class debug output. πŸ›

πŸ› οΈ METHODS πŸ› οΈ

Okay, these are the actual moves. Each one is iconic in her own way.

πŸ’… create πŸ’…

Arguments: $sqlt_type, \%sqlt_args, $preversion

create will generate sql for the supplied schema_class in sql_dir. The flavour of sql to generate can be controlled by supplying a sqlt_type which should be a SQL::Translator name. πŸŽ€

Arguments for SQL::Translator can be supplied in the sqlt_args hashref. ✨

Optional preversion can be supplied to generate a diff to be used by upgrade. πŸ¦‹

πŸš€ upgrade πŸš€

Arguments: <none>

upgrade will attempt to upgrade the connected database to the same version as the schema_class. 🫢

MAKE SURE YOU BACKUP YOUR DB FIRST 🚨

πŸ“¦ install πŸ“¦

Arguments: $version

install is here to help when you want to move to DBIx::Class::Schema::Versioned and have an existing database. install will take a version and add the version tracking tables and 'install' the version. No further ddl modification takes place. Setting the force attribute to a true value will allow overriding of already versioned databases. πŸ‘‘

🌱 deploy 🌱

Arguments: $args

deploy will create the schema at the connected database. $args are passed straight to deploy in DBIx::Class::Schema. 🌈

✨ insert ✨

Arguments: $rs, $set

insert takes the name of a resultset from the schema_class and a hashref of data to insert into that resultset. πŸ’–

πŸ”„ update πŸ”„

Arguments: $rs, $set, $where

update takes the name of a resultset from the schema_class, a hashref of data to update and a where hash used to form the search for the rows to update. 🫢

πŸ—‘οΈ delete πŸ—‘οΈ

Arguments: $rs, $where, $attrs

delete takes the name of a resultset from the schema_class, a where hashref and attrs to pass to ->search. The found data is deleted and cannot be recovered. 😭

πŸ”Ž select πŸ”Ž

Arguments: $rs, $where, $attrs

select takes the name of a resultset from the schema_class, a where hashref and attrs to pass to ->search. The found data is returned in a array ref where the first row will be the columns list. πŸ“Š

❓ FURTHER QUESTIONS? ❓

Check the list of additional DBIC resources. 🫢

This module is free software copyright by the DBIx::Class (DBIC) authors. You can redistribute it and/or modify it under the same terms as the DBIx::Class library. πŸ’œ


Catch you later, bestie β€” this page is from perl v5.42.0, dated 2025-01-22, and it’s DBIx::Class::Admin(3). πŸ’–βœ¨

πŸ“¦ where this page comes from