#62 full model definitions

This commit is contained in:
Hamid Reza Mohammadi 2021-01-11 11:54:12 +03:30
parent 50f4dfa40c
commit 0da42457c4
10 changed files with 646 additions and 2 deletions

View File

@ -13,6 +13,7 @@ using RSecurityBackend.Models.Auth.Db;
using System;
using Dapper;
using RMuseum.Models.Ganjoor;
using RMuseum.Models.MusicCatalogue;
namespace RMuseum.DbContext
{
@ -83,6 +84,12 @@ namespace RMuseum.DbContext
builder.Entity<GanjoorPage>()
.HasIndex(c => c.FullUrl);
builder.Entity<GanjoorSinger>()
.HasIndex(c => c.Name);
builder.Entity<GanjoorTrack>()
.HasIndex(c => c.Name);
}
@ -197,5 +204,25 @@ namespace RMuseum.DbContext
/// </summary>
public DbSet<GanjoorMetre> GanjoorMetres { get; set; }
/// <summary>
/// singers
/// </summary>
public DbSet<GanjoorSinger> Singers { get; set; }
/// <summary>
/// music tracks
/// </summary>
public DbSet<GanjoorTrack> MusicTracks { get; set; }
/// <summary>
/// GolhaCollection
/// </summary>
public DbSet<GolhaCollection> GolhaCollections { get; set; }
/// <summary>
/// PoemMusicTracks
/// </summary>
public DbSet<PoemMusicTrack> PoemMusicTracks { get; set; }
}
}

View File

@ -0,0 +1,90 @@
using RMuseum.Models.MusicCatalogue;
namespace RMuseum.Models.Ganjoor
{
/// <summary>
/// poem related track
/// </summary>
public class PoemMusicTrack
{
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// poem id
/// </summary>
public int PoemId { get; set; }
/// <summary>
/// poem
/// </summary>
public GanjoorPoem Poem { get; set; }
/// <summary>
/// track type
/// </summary>
public PoemMusicTrackType TrackType { get; set; }
/// <summary>
/// artist name
/// </summary>
public string ArtistName { get; set; }
/// <summary>
/// artist url
/// </summary>
public string ArtistUrl { get; set; }
/// <summary>
/// album name
/// </summary>
public string AlbumName { get; set; }
/// <summary>
/// album url
/// </summary>
public string AlbumUrl { get; set; }
/// <summary>
/// track name
/// </summary>
public string TrackName { get; set; }
/// <summary>
/// track url
/// </summary>
public string TrackUrl { get; set; }
/// <summary>
/// GanjoorTrack Id
/// </summary>
public int? GanjoorTrackId { get; set; }
/// <summary>
/// GanjoorTrack
/// </summary>
public virtual GanjoorTrack GanjoorTrack { get; set; }
/// <summary>
/// GolhaTrack Id
/// </summary>
public int? GolhaTrackId { get; set; }
/// <summary>
/// GolhaTrack
/// </summary>
public virtual GolhaTrack GolhaTrack { get; set; }
/// <summary>
/// description
/// </summary>
public string Description { get; set; }
/// <summary>
/// broken link
/// </summary>
public bool BrokenLink { get; set; }
}
}

View File

@ -0,0 +1,25 @@
namespace RMuseum.Models.Ganjoor
{
/// <summary>
/// poem music track type
/// </summary>
public enum PoemMusicTrackType
{
/// <summary>
/// https://beeptunes.com/or http://khosousi.com
/// </summary>
BeepTunesOrKhosousi = 0,
/// <summary>
/// http://www.golha.co.uk
/// </summary>
Golha = 1,
/// <summary>
/// itunes.com
/// </summary>
iTunes = 2,
/// <summary>
/// https://open.spotify.com/
/// </summary>
Spotify = 3
}
}

View File

@ -0,0 +1,40 @@
using System.Collections.Generic;
namespace RMuseum.Models.MusicCatalogue
{
/// <summary>
/// music catalogue album
/// </summary>
public class GanjoorAlbum
{
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// singer id
/// </summary>
public int SingerId { get; set; }
/// <summary>
/// singer
/// </summary>
public GanjoorSinger Singer { get; set; }
/// <summary>
/// name
/// </summary>
public string Name { get; set; }
/// <summary>
/// url
/// </summary>
public string Url { get; set; }
/// <summary>
/// tracks
/// </summary>
public ICollection<GanjoorTrack> Tracks { get; set; }
}
}

View File

@ -0,0 +1,30 @@
using System.Collections.Generic;
namespace RMuseum.Models.MusicCatalogue
{
/// <summary>
/// music catalogue singer
/// </summary>
public class GanjoorSinger
{
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// name
/// </summary>
public string Name { get; set; }
/// <summary>
/// url
/// </summary>
public string Url { get; set; }
/// <summary>
/// albums
/// </summary>
public ICollection<GanjoorAlbum> Albums { get; set; }
}
}

View File

@ -0,0 +1,46 @@
namespace RMuseum.Models.MusicCatalogue
{
/// <summary>
/// music catalogue track
/// </summary>
public class GanjoorTrack
{
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// album id
/// </summary>
public int AlbumId { get; set; }
/// <summary>
/// album
/// </summary>
public GanjoorAlbum Album { get; set; }
/// <summary>
/// name
/// </summary>
public string Name { get; set; }
/// <summary>
/// url
/// </summary>
public string Url { get; set; }
/// <summary>
/// blocked from suggestion
/// </summary>
public bool Blocked { get; set; }
/// <summary>
/// reason
/// </summary>
/// <example>
/// track is purely music and no singing is done through it
/// </example>
public string BlockReason { get; set; }
}
}

View File

@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace RMuseum.Models.MusicCatalogue
@ -23,5 +24,10 @@ namespace RMuseum.Models.MusicCatalogue
/// url
/// </summary>
public string Url { get { return $"http://www.golha.co.uk/fa/search_basic/{Id}"; } }
/// <summary>
/// programs
/// </summary>
public ICollection<GolhaProgram> Programs { get; set; }
}
}

View File

@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace RMuseum.Models.MusicCatalogue
@ -40,5 +41,10 @@ namespace RMuseum.Models.MusicCatalogue
/// mp3
/// </summary>
public string Mp3 { get; set; }
/// <summary>
/// tracks
/// </summary>
public ICollection<GolhaTrack> Tracks { get; set; }
}
}

View File

@ -31,5 +31,28 @@
/// title
/// </summary>
public string Title { get; set; }
/// <summary>
/// singer id
/// </summary>
public int? SingerId { get; set; }
/// <summary>
/// singer
/// </summary>
public virtual GanjoorSinger Singer { get; set; }
/// <summary>
/// blocked from suggestion
/// </summary>
public bool Blocked { get; set; }
/// <summary>
/// reason
/// </summary>
/// <example>
/// track is purely music and no singing is done through it
/// </example>
public string BlockReason { get; set; }
}
}

View File

@ -1226,6 +1226,26 @@
Ganjoor Metres
</summary>
</member>
<member name="P:RMuseum.DbContext.RMuseumDbContext.Singers">
<summary>
singers
</summary>
</member>
<member name="P:RMuseum.DbContext.RMuseumDbContext.MusicTracks">
<summary>
music tracks
</summary>
</member>
<member name="P:RMuseum.DbContext.RMuseumDbContext.GolhaCollections">
<summary>
GolhaCollection
</summary>
</member>
<member name="P:RMuseum.DbContext.RMuseumDbContext.PoemMusicTracks">
<summary>
PoemMusicTracks
</summary>
</member>
<member name="T:RMuseum.Models.Artifact.PublishStatus">
<summary>
Items or pictures status
@ -3700,6 +3720,116 @@
text
</summary>
</member>
<member name="T:RMuseum.Models.Ganjoor.PoemMusicTrack">
<summary>
poem related track
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.Id">
<summary>
id
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.PoemId">
<summary>
poem id
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.Poem">
<summary>
poem
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.TrackType">
<summary>
track type
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.ArtistName">
<summary>
artist name
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.ArtistUrl">
<summary>
artist url
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.AlbumName">
<summary>
album name
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.AlbumUrl">
<summary>
album url
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.TrackName">
<summary>
track name
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.TrackUrl">
<summary>
track url
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.GanjoorTrackId">
<summary>
GanjoorTrack Id
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.GanjoorTrack">
<summary>
GanjoorTrack
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.GolhaTrackId">
<summary>
GolhaTrack Id
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.GolhaTrack">
<summary>
GolhaTrack
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.Description">
<summary>
description
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.PoemMusicTrack.BrokenLink">
<summary>
broken link
</summary>
</member>
<member name="T:RMuseum.Models.Ganjoor.PoemMusicTrackType">
<summary>
poem music track type
</summary>
</member>
<member name="F:RMuseum.Models.Ganjoor.PoemMusicTrackType.BeepTunesOrKhosousi">
<summary>
https://beeptunes.com/or http://khosousi.com
</summary>
</member>
<member name="F:RMuseum.Models.Ganjoor.PoemMusicTrackType.Golha">
<summary>
http://www.golha.co.uk
</summary>
</member>
<member name="F:RMuseum.Models.Ganjoor.PoemMusicTrackType.iTunes">
<summary>
itunes.com
</summary>
</member>
<member name="F:RMuseum.Models.Ganjoor.PoemMusicTrackType.Spotify">
<summary>
https://open.spotify.com/
</summary>
</member>
<member name="T:RMuseum.Models.Ganjoor.VersePosition">
<summary>
معنی فیلد position در جدول verse با توجه به مقادیر این ساختار داده مشخص می شود.
@ -4083,6 +4213,227 @@
Job Type
</summary>
</member>
<member name="T:RMuseum.Models.MusicCatalogue.GanjoorAlbum">
<summary>
music catalogue album
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorAlbum.Id">
<summary>
id
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorAlbum.SingerId">
<summary>
singer id
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorAlbum.Singer">
<summary>
singer
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorAlbum.Name">
<summary>
name
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorAlbum.Url">
<summary>
url
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorAlbum.Tracks">
<summary>
tracks
</summary>
</member>
<member name="T:RMuseum.Models.MusicCatalogue.GanjoorSinger">
<summary>
music catalogue singer
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorSinger.Id">
<summary>
id
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorSinger.Name">
<summary>
name
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorSinger.Url">
<summary>
url
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorSinger.Albums">
<summary>
albums
</summary>
</member>
<member name="T:RMuseum.Models.MusicCatalogue.GanjoorTrack">
<summary>
music catalogue track
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorTrack.Id">
<summary>
id
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorTrack.AlbumId">
<summary>
album id
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorTrack.Album">
<summary>
album
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorTrack.Name">
<summary>
name
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorTrack.Url">
<summary>
url
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorTrack.Blocked">
<summary>
blocked from suggestion
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GanjoorTrack.BlockReason">
<summary>
reason
</summary>
<example>
track is purely music and no singing is done through it
</example>
</member>
<member name="T:RMuseum.Models.MusicCatalogue.GolhaCollection">
<summary>
http://www.golha.co.uk offline catalogue
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaCollection.Id">
<summary>
id
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaCollection.Name">
<summary>
name
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaCollection.Url">
<summary>
url
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaCollection.Programs">
<summary>
programs
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaProgram.Id">
<summary>
id
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaProgram.GolhaCollectionId">
<summary>
GolhaCollection Id
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaProgram.GolhaCollection">
<summary>
GolhaCollection
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaProgram.Title">
<summary>
title
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaProgram.ProgramOrder">
<summary>
program order
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaProgram.Url">
<summary>
url
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaProgram.Mp3">
<summary>
mp3
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaProgram.Tracks">
<summary>
tracks
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaTrack.Id">
<summary>
id
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaTrack.GolhaProgramId">
<summary>
GolhaProgram Id
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaTrack.GolhaProgram">
<summary>
GolhaProgram
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaTrack.TrackNo">
<summary>
track no
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaTrack.Timing">
<summary>
timing
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaTrack.Title">
<summary>
title
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaTrack.SingerId">
<summary>
singer id
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaTrack.Singer">
<summary>
singer
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaTrack.Blocked">
<summary>
blocked from suggestion
</summary>
</member>
<member name="P:RMuseum.Models.MusicCatalogue.GolhaTrack.BlockReason">
<summary>
reason
</summary>
<example>
track is purely music and no singing is done through it
</example>
</member>
<member name="T:RMuseum.Models.Note.RNoteType">
<summary>
Note Type