---
name: "Rose::DB::Object::Std::Metadata"
section: "3pm"
platform: "linux"
package: "librose-db-object-perl"
version: "1:0.820-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Rose::DB::Object::Std::Metadata"
---

# Rose::DB::Object::Std::Metadata(3pm)

Standardized database object metadata.

## NAME

Rose::DB::Object::Std::Metadata - Standardized database object metadata.

## SYNOPSIS

```
  use Rose::DB::Object::Std::Metadata;
  $meta = Rose::DB::Object::Std::Metadata->new(class => 'Product');
  # ...or...
  # $meta = Rose::DB::Object::Std::Metadata->for_class('Product');
  $meta->table('products');
  $meta->columns
  (
    id          => { type => 'int', primary_key => 1 },
    name        => { type => 'varchar', length => 255 },
    description => { type => 'text' },
    category_id => { type => 'int' },
    status =>
    {
      type      => 'varchar',
      check_in  => [ 'active', 'inactive' ],
      default   => 'inactive',
    },
    start_date  => { type => 'datetime' },
    end_date    => { type => 'datetime' },
    date_created     => { type => 'timestamp', default => 'now' },
    last_modified    => { type => 'timestamp', default => 'now' },
  );
  $meta->add_unique_key('name');
  $meta->foreign_keys
  (
    category =>
    {
      class       => 'Category',
      key_columns =>
      {
        category_id => 'id',
      }
    },
  );
  ...
```

## DESCRIPTION

`"Rose::DB::Object::Std::Metadata"` is a subclass of Rose::DB::Object::Metadata that is designed to serve the needs of Rose::DB::Object::Std objects.  See the Rose::DB::Object::Std documentations for information on what differentiates it from Rose::DB::Object.

Only the methods that are overridden are documented here.  See the Rose::DB::Object::Metadata documentation for the rest.

## OBJECT METHODS

- **add\_primary\_key\_column COLUMN**

  This method is an alias for the `"add_primary_key_columns()"` method.

- **add\_primary\_key\_columns COLUMNS**

  Since Rose::DB::Object::Std objects must have a single primary key column named "id", calling this method with a COLUMNS argument of anything other than the column name "id" or a reference to an array containing the column name "id" will cause a fatal error.

  In general, you do not need to use this method at all since the `"primary_key_columns()"` method is hard-coded to always return "id".

- **initialize \[ARGS\]**

  This method does the same thing as the Rose::DB::Object::Metadata method of the same name, with one exception.  If there is no column named "id" in the list of columns, a scalar primary key column named "id" is added to the column list.  Then initialization proceeds as usual.

- **primary\_key\_columns**

  Always returns the column name "id" (in list context) or a reference to an array containing the column name "id" (in scalar context).

## AUTHOR

John C. Siracusa (siracusa@gmail.com)

## LICENSE

Copyright (c) 2010 by John C. Siracusa.  All rights reserved.  This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
