Difference between revisions of "Adding a Field to a Live Repository"
m (appears out of date and needing an update) |
(Brought the most recent documentation to the top, so the warnings about needing to modify the SQL tables was clearly referring to 3.0 and not 3.3+.) |
||
Line 3: | Line 3: | ||
[[Category: Out of Date]] | [[Category: Out of Date]] | ||
− | + | === EPrints 3.3+ === | |
− | + | Follow the instructions as you would for [[HOW TO: Add a New Field]]. | |
− | + | As described there, you define your new fields in... | |
+ | * <code>/opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/eprint_fields.pl</code> for EPrint-level metadata, | ||
+ | * <code>/opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/document_fields.pl</code> for document-level metadata (this file doesn't exist by default, but is honoured), | ||
+ | * and <code>/opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/user_fields.pl</code> for user metadata, etc etc. | ||
− | |||
− | + | Since a repository's <code>eprint_fields.pl</code> will override a flavour's <code>eprint_fields.pl</code> based on them both having the same file name, should you only wish to add to a flavour's fields rather than replace them, you may prefer to give your archive's local version a file name such as <code>eprint_fields_local.pl</code>, and then inside have only your new field(s): | |
− | + | push @{$c->{fields}->{eprint}}, | |
+ | |||
+ | { | ||
+ | name => 'my_first_new_field', | ||
+ | type => 'set', | ||
+ | options => [ | ||
+ | 'yes', | ||
+ | 'no', | ||
+ | 'maybe', | ||
+ | ], | ||
+ | input_rows => 1, | ||
+ | }, | ||
+ | |||
+ | { | ||
+ | name => 'my_second_new_field', | ||
+ | type => 'set', | ||
+ | options => [ | ||
+ | 'yes', | ||
+ | 'no', | ||
+ | 'maybe', | ||
+ | ], | ||
+ | input_rows => 1, | ||
+ | }, | ||
+ | |||
+ | ; | ||
− | |||
− | + | Simply make sure your <code>push</code>, is adding your field to the correct dataset you wish to add fields to - in this case an <code>eprint</code> dataset. | |
+ | |||
+ | |||
+ | |||
+ | Then, once you have added your new field definitions to the appropriate configuration file you can run ''update'' via [[API:bin/epadmin|epadmin]] from the shell: | ||
+ | |||
+ | ./bin/epadmin update ARCHIVEID | ||
− | |||
− | |||
− | |||
− | |||
− | |||
=== EPrints 3.1+ === | === EPrints 3.1+ === | ||
− | + | EPrint 3.3's ''update'' is a synonym of the ''update_database_structure'' method available from Eprints 3.1+: | |
./bin/epadmin update_database_structure ARCHIVEID | ./bin/epadmin update_database_structure ARCHIVEID | ||
− | + | ||
+ | === EPrints 3.0 === | ||
+ | |||
+ | To add a field to a live eprints archive in Eprints 3.0 you have to modify the SQL tables. | ||
+ | Before you start this, you may wish to BackupTheDatabase. | ||
+ | |||
+ | * Add the new columns to the appropriate tables. There are no longer four separate tables for eprints as there were in EP2 (<code>archive</code>, <code>buffer</code> etc), so it's simpler. | ||
+ | ** For a field defined in <code>eprint_fields.pl</code>, the tables are <code>eprint</code> and <code>eprint__ordervalues_en</code> (replacing <code>en</code> with your language as required). | ||
+ | ** For a field defined in <code>document_fields.pl</code>, you want <code>document</code> and <code>document__ordervalues_en</code>. | ||
+ | ** And so on... | ||
+ | * The column types are the same as for EP2, ie in <code>eprint</code> you want a type appropriate to the type of your field exactly as described in the Recipe for EP2, while in <code>eprint__ordervalues_en</code> you want <code>text</code> irrespective of your field type. | ||
+ | |||
+ | |||
+ | === EPrints 2.x === | ||
+ | |||
+ | See historical versions of this wiki page. |
Revision as of 17:08, 17 July 2023
EPrints 3.3+
Follow the instructions as you would for HOW TO: Add a New Field.
As described there, you define your new fields in...
/opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/eprint_fields.pl
for EPrint-level metadata,/opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/document_fields.pl
for document-level metadata (this file doesn't exist by default, but is honoured),- and
/opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/user_fields.pl
for user metadata, etc etc.
Since a repository's eprint_fields.pl
will override a flavour's eprint_fields.pl
based on them both having the same file name, should you only wish to add to a flavour's fields rather than replace them, you may prefer to give your archive's local version a file name such as eprint_fields_local.pl
, and then inside have only your new field(s):
push @{$c->{fields}->{eprint}}, { name => 'my_first_new_field', type => 'set', options => [ 'yes', 'no', 'maybe', ], input_rows => 1, }, { name => 'my_second_new_field', type => 'set', options => [ 'yes', 'no', 'maybe', ], input_rows => 1, }, ;
Simply make sure your push
, is adding your field to the correct dataset you wish to add fields to - in this case an eprint
dataset.
Then, once you have added your new field definitions to the appropriate configuration file you can run update via epadmin from the shell:
./bin/epadmin update ARCHIVEID
EPrints 3.1+
EPrint 3.3's update is a synonym of the update_database_structure method available from Eprints 3.1+:
./bin/epadmin update_database_structure ARCHIVEID
EPrints 3.0
To add a field to a live eprints archive in Eprints 3.0 you have to modify the SQL tables. Before you start this, you may wish to BackupTheDatabase.
- Add the new columns to the appropriate tables. There are no longer four separate tables for eprints as there were in EP2 (
archive
,buffer
etc), so it's simpler.- For a field defined in
eprint_fields.pl
, the tables areeprint
andeprint__ordervalues_en
(replacingen
with your language as required). - For a field defined in
document_fields.pl
, you wantdocument
anddocument__ordervalues_en
. - And so on...
- For a field defined in
- The column types are the same as for EP2, ie in
eprint
you want a type appropriate to the type of your field exactly as described in the Recipe for EP2, while ineprint__ordervalues_en
you wanttext
irrespective of your field type.
EPrints 2.x
See historical versions of this wiki page.