package Common::DB::Item::OnixCode;

use strict;
use warnings;

use lib '/app/tools/common/lib';
use Common::DB::ItemCollection;
use Common::DB::Item;
use Common::Assert;
use base 'Common::DB::Item';

use constant kTable => 'onix_code';
use constant kDB    => Common::DB::Item::kCommonDB;

use constant kCodeListProductForm       => 7;
use constant kCodeListProductFormDetail => 78;
use constant kCodeListEpubType          => 10;

# Going to define constants for all the types we refer to in code.
# This will make it easier to detect when we've screwed up, I think.
#
use constant kProductFormElectronicBookText => 'DG';
use constant kProductFormDigitalDelivery    => 'EA';
use constant kProductFormDigitalDownload    => 'ED';
use constant kProductFormAudio              => 'AA';
use constant kProductFormAudioFile          => 'AJ';
use constant kProductFormCD                 => 'AC';
use constant kProductFormSoftback           => 'BC';
use constant kProductFormHardback           => 'BB';
use constant kProductFormOther              => 'DZ';

use constant kEpubTypeUnspecified           => '099';
use constant kEpubTypeTXT                   => '025';
use constant kEpubTypeHTML                  => '001';
use constant kEpubTypeKindle                => '031';
use constant kEpubTypeOpenEBook             => '023';
use constant kEpubTypeMobiPocket            => '022';
use constant kEpubTypePDF                   => '002';
use constant kEpubTypeEPUB                  => '029';
use constant kEpubTypeMicrosoftReaderLvl1_3 => '005';
use constant kEpubTypeMicrosoftReaderLvl5   => '006';
use constant kEpubTypeEReader               => '010';

sub GetAllForCodeList {
    my ( $class, $codeList ) = @_;
    assert($codeList);

    # Bake in sorting.
    #
    return $class->GetAll( "SELECT * FROM " . kTable . " WHERE code_list=$codeList ORDER BY description" );
}
1;
