- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sellerbuyer: Milyen laptopot vegyek? Segítek: semmilyet!
- Geri Bátyó: Agglegénykonyha 5 – Edények és konyhai eszközök
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- sivi151: Framework csendesen felvette a magyar billentyűzetet
- aquark: A ló túloldalán (Intel-AMD szivatás)
- Luck Dragon: Asszociációs játék. :)
- Amazon Kindle JailBreak
Új hozzászólás Aktív témák
-
Keem1
veterán
válasz
martonx #10158 üzenetére
Van egy Spotify playlist automatizált motyóm, ami a Spotify API-val dolgozik.
Bár az elv több része is hasonlóan fog működni, most még a loggolt user (ketten csináljuk) DB-be letárolása megy, de a playlisteké is ugyanezen elv mentén fog.EF vagy EF Core?
EF Core 8Sajnos terjedelmi és egyéb okok miatt nem tudom bemásolni, de a logic a következő:
Van egy metódus: SpotifyLogin(SpotifyUser user)public DbSet<SpotifyUser>SpotifyUsers {get;set;}
[Table("spotifyusers")]
public class SpotifyUser()
{
[Key, Column("id")]
public int Id { get; set; }
[Column("tstamp")]
public DateTime? TimeStamp { get; set; } = DateTime.Now;
[Column("username")]
public string? Username { get; set; }
[Column("displayname")]
public string? Name { get; set; }
[Column("email")]
public string? Email { get; set; }
[Column("accesstoken")]
public string? AccessToken { get; set; }
[Column("followers")]
public int Followers { get; set; } = 0;
[Column("image")]
public string? Image { get; set; }
[Column("profileurl")]
public string? ProfileUrl { get; set; }
[Column("lastlogin")]
public DateTime? LastLogin { get; set; } = DateTime.Now;
}Ha az API-val sikerült beloggolnia (ennek a mikéntje jelenleg mindegy is), akkor lesz egy objektumunk, kb. ilyen:
var user = new SpotifyUser()
{
//itt az API által átadott adatok
}és ezután kerülünk abba a metódusba, ahonnan idéztem is már: SpotifyLogin(SpotifyUser user)
Éééés itt pedig ketté ágazik a dolog, de mint mindent, ezt is próbálom minél egyszerűbbre, univerzálisabbra, és ha lehet, a legkevésbé redundánsra csinálni.
Szóval letároljuk a usert DB-be, van egy user objectünk, amiről még nem tudjuk, hogy új-e vagy régi.
Ha új, egy új entry lesz a DB-ben, ha régi, akkor aktualizáljuk, de az ID-ja az változatlan marad.Innen már ismerős:
using (var db = new MySqlContext())
{
var existing = db.SpotifyUsers.Where(x => x.Username == userdata.Id);
if (existing != null && existing.Count()>0)
{
// Ez a bajos, ha létezik a user
// Ide valami olyan lenne jó, hogy:
// db.SpotifyUsers.Update(userdata);
// De erre csak egy új entry-t hoz létre a DB-ben
}
else
{
//Ez működik, ha még nincs ilyen user
db.SpotifyUsers.Add(userdata);
return (db.SaveChanges()>0? true : false);
}
}Szóval eddig jutottam, és a playlistek kezelése is kb ugyanígy fog kinézni, ha már létezik, akkor csak updateljük a followereket, a trackek számát, stb. Ha még nincs ilyen a DB-ben, akkor meg újként elmentjük teljes egészében.
Az update amúgy működne úgy, hogy igazából lekérem a létező usert, és soronként/propertynként "lemásolom" a datát, és úgy egy Update, de nem akarok ennyi redundanciát.
Ja, és meghagynám annyira univerzálisnak, hogy jelenleg működik MySQL és Sqlite DB-vel is, ami maradna, MySQL a fő cél, de backupnak meghagynám az SQLite-ot is.
Érthető valamennyire?
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Két nap múlva itt a Xiaomi 17, van egy pár hivatalos fotó is róla
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen TV-t vegyek?
- Milyen autót vegyek?
- Szünetmentes tápegységek (UPS)
- Azonnali fotós kérdések órája
- Bambu Lab 3D nyomtatók
- Kerékpárosok, bringások ide!
- Apple Watch Sport - ez is csak egy okosóra
- DJI topic
- További aktív témák...
- Bomba ár! Acer Nitro V - i5-6300HQ I 8GB I 128SSD + 1TB I GTX960 4G I 15,6" FHD I Cam I W10 I Gari!
- Bomba ár! Acer Aspire 7 - i7-7700HQ I 16GB I 256SSD I 15,6" FHD I GTX1050 I Cam I W11 I Gari!
- ASUS ROG Strix G15 gamer laptop, i5-10300H, GTX 1650 Ti, makulátlan állapotban
- Bomba ár! Acer A515-55 - i7-10GEN I 16GB I 256SSD I 15,6" FHD I Intel Iris Plus I Cam I W11 I Gari!
- MSI RTX 5080 16GB GDDR7 SHADOW 3X OC EDITION - Új, 3 év garancia - Eladó!
- Apple iPhone 16 Pro 128GB,Újszerű,Dobozával,12 hónap garanciával
- Önerő nélkül is elvihető! Részletfizetés. 27 % Áfás számlával Dell Alienware QD-OLED gamer monitor
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RTX 5070 Ti 16GB GAMER PC termékbeszámítással
- Készpénzes számítógép PC félkonfig alkatrész hardver felvásárlás személyesen / postával korrekt áron
- LG 35WN75C-B - 35" Ívelt VA - 3440x1440 - 100Hz 5ms - USB Type-C 60W - AMD FreeSync - HDR 10
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest