Album kosztuje tyle, co jego zawartość
Kilka dni temu opisaliśmy, jak ceny pojedynczych utworów przestały być czymś, co autor wpisuje w formularz, i stały się jednym z trzech poziomów ustalanych przez platformę. Zostało dokończyć to samo dla albumów. Przy okazji zajrzeliśmy w kod, którego dawno nikt nie odwiedzał, i znaleźliśmy tam cztery rzeczy, o których nie mieliśmy pojęcia.
Album to jego utwory
Pole ceny albumu przyjmowało dowolną liczbę i nie miało górnej granicy. Można było wpisać milion. Nikt tego nie zrobił, ale rzecz nie w tym, co ktoś zrobił, tylko w tym, co pole w ogóle dopuszcza.
Trzy poziomy z utworów tu nie pasują, bo trzyutworowa epka i dwupłytowy album nie powinny kosztować tyle samo. Zamiast tego album bierze cenę ze swojej zawartości: sumujemy ceny utworów, które się na nim znajdują, i mnożymy przez współczynnik. Autor wybiera jeden z dwóch: pełną cenę, czyli 80% tej sumy, albo promocyjną, czyli 60%. Album zawsze wychodzi taniej niż kupowanie po jednym, bo tak jest zbudowany, a nie dlatego, że ktoś o tym pamiętał.
Dopóki album nie jest wydany, kwota podąża za listą utworów — dorzucasz piosenkę, album jest wart więcej. Od momentu wydania cena zostaje przypięta i może już tylko spaść. Kiedy utwór z albumu potanieje, bo minął mu rok od premiery, potanieje też album.
Zakup albumu wreszcie daje utwory z albumu
A teraz część, która nam się nie podobała najbardziej. Zakup albumu zapisywał zamówienie i na tym się kończył. Nic nie łączyło tego zamówienia z dostępem do piosenek. Można było kupić cały album i dalej płacić za słuchanie każdego utworu z niego z osobna.
Teraz posiadanie albumu znaczy posiadanie jego utworów. Idzie za tym druga rzecz: jeśli zanim kupiłeś album, słuchałeś już z niego pojedynczych piosenek albo kupiłeś którąś osobno, to wszystko odejmuje się od ceny albumu. Za tę samą muzykę płaci się raz.
Cztery ciche awarie
Żadna z nich się nie objawiała. Wszystkie siedziały w kodzie i czekały.
Tabela obserwujących album nigdy nie powstała. Kod pytał bazę o listę osób obserwujących album, a takiej tabeli po prostu nie było. Zapytanie leciało wyjątkiem wewnątrz bloku, który wyjątki połyka i zapisuje do logu, więc na zewnątrz wszystko wyglądało normalnie. Skutek: wydanie albumu nie trafiało do tablicy nikogo, kto go obserwuje. Cisza, o której nikt by się nie dowiedział, bo formalnie nic się nie psuło.
Kwota zamówienia była liczbą całkowitą. Wszystkie inne kolumny pieniężne trzymają cztery miejsca po przecinku; ta jedna została przeoczona podczas porządkowania i została przy liczbach całkowitych. Album za 12,50 monety kosztował dwanaście. Ceny wyliczane z zawartości są z natury ułamkowe, więc trzeba to było naprawić, zanim cokolwiek ruszy.
Odpowiedź po udanym zakupie wywalała się na brakującym imporcie. Monety schodziły z konta, zamówienie się zapisywało, a potem serwer próbował sformatować datę klasą, której w tym miejscu nie widział, i zwracał błąd. Z perspektywy kupującego: zapłaciłem i dostałem komunikat o awarii.
Do zakupu albumu nie prowadziła żadna trasa. Metody obsługujące zakup i pre-order istniały w kodzie od dawna, ale nic ich nie wywoływało — nie było adresu, pod który przeglądarka mogłaby się zgłosić. To zresztą wyjaśnia, dlaczego trzy poprzednie usterki nigdy nikogo nie dotknęły: albumu i tak nie dało się kupić. Teraz trasy są podpięte, a wszystko po drodze naprawione.
Dlaczego o tym piszemy
Można było wydać poprawki po cichu. Wolimy inaczej: kiedy w grę wchodzą cudze pieniądze, warto pokazywać nie tylko to, co dodaliśmy, ale też co znaleźliśmy przy zaglądaniu pod podłogę. Nikt nie stracił na tym ani grosza — sprawdziliśmy — i właśnie dlatego można o tym opowiedzieć spokojnie.