from beets.dbcore import types

TYPE_BY_FIELD: dict[str, types.Type] = {
    "acoustid_fingerprint": types.STRING,
    "acoustid_id": types.STRING,
    "added": types.DATE,
    "albumartist_credit": types.STRING,
    "albumartists_credit": types.MULTI_VALUE_DSV,
    "albumartist_sort": types.STRING,
    "albumartists_sort": types.MULTI_VALUE_DSV,
    "albumartists": types.MULTI_VALUE_DSV,
    "albumartist": types.STRING,
    "albumdisambig": types.STRING,
    "album_id": types.FOREIGN_ID,
    "albumstatus": types.STRING,
    "album": types.STRING,
    "albumtypes": types.SEMICOLON_SPACE_DSV,
    "albumtype": types.STRING,
    "arrangers": types.MULTI_VALUE_DSV,
    "arrangers_ids": types.MULTI_VALUE_DSV,
    "artist_credit": types.STRING,
    "artists_credit": types.MULTI_VALUE_DSV,
    "artists_ids": types.MULTI_VALUE_DSV,
    "artist_sort": types.STRING,
    "artists_sort": types.MULTI_VALUE_DSV,
    "artists": types.MULTI_VALUE_DSV,
    "artist": types.STRING,
    "artpath": types.NullPathType(),
    "asin": types.STRING,
    "barcode": types.STRING,
    "bitdepth": types.INTEGER,
    "bitrate_mode": types.STRING,
    "bitrate": types.ScaledInt(1000, "kbps"),
    "bpm": types.INTEGER,
    "catalognum": types.STRING,
    "channels": types.INTEGER,
    "comments": types.STRING,
    "composer_sort": types.STRING,
    "composers": types.MULTI_VALUE_DSV,
    "composers_ids": types.MULTI_VALUE_DSV,
    "comp": types.BOOLEAN,
    "country": types.STRING,
    "data_source": types.STRING,
    "day": types.PaddedInt(2),
    "discogs_albumid": types.INTEGER,
    "discogs_artistid": types.INTEGER,
    "discogs_labelid": types.INTEGER,
    "disctitle": types.STRING,
    "disctotal": types.PaddedInt(2),
    "disc": types.PaddedInt(2),
    "encoder_info": types.STRING,
    "encoder_settings": types.STRING,
    "encoder": types.STRING,
    "format": types.STRING,
    "genres": types.MULTI_VALUE_DSV,
    "grouping": types.STRING,
    "id": types.PRIMARY_ID,
    "initial_key": types.MusicalKey(),
    "isrc": types.STRING,
    "label": types.STRING,
    "language": types.STRING,
    "length": types.DurationType(),
    "lyricists": types.MULTI_VALUE_DSV,
    "lyricists_ids": types.MULTI_VALUE_DSV,
    "lyrics": types.STRING,
    "mb_albumartistids": types.MULTI_VALUE_DSV,
    "mb_albumartistid": types.STRING,
    "mb_albumid": types.STRING,
    "mb_artistids": types.MULTI_VALUE_DSV,
    "mb_artistid": types.STRING,
    "mb_releasegroupid": types.STRING,
    "mb_releasetrackid": types.STRING,
    "mb_trackid": types.STRING,
    "mb_workid": types.STRING,
    "media": types.STRING,
    "month": types.PaddedInt(2),
    "mtime": types.DATE,
    "original_day": types.PaddedInt(2),
    "original_month": types.PaddedInt(2),
    "original_year": types.PaddedInt(4),
    "path": types.PathType(),
    "r128_album_gain": types.NULL_FLOAT,
    "r128_track_gain": types.NULL_FLOAT,
    "releasegroupdisambig": types.STRING,
    "release_group_title": types.STRING,
    "remixers": types.MULTI_VALUE_DSV,
    "remixers_ids": types.MULTI_VALUE_DSV,
    "rg_album_gain": types.NULL_FLOAT,
    "rg_album_peak": types.NULL_FLOAT,
    "rg_track_gain": types.NULL_FLOAT,
    "rg_track_peak": types.NULL_FLOAT,
    "samplerate": types.ScaledInt(1000, "kHz"),
    "script": types.STRING,
    "style": types.STRING,
    "title": types.STRING,
    "trackdisambig": types.STRING,
    "tracktotal": types.PaddedInt(2),
    "track": types.PaddedInt(2),
    "work_disambig": types.STRING,
    "work": types.STRING,
    "year": types.PaddedInt(4),
}
