some improvements
This commit is contained in:
parent
5bb78d1366
commit
4ec3e7a26a
70
code/app.lua
70
code/app.lua
@ -18,17 +18,18 @@ end)
|
|||||||
app:match("/spl/:station", function(self)
|
app:match("/spl/:station", function(self)
|
||||||
-- print( to_json(self.params))
|
-- print( to_json(self.params))
|
||||||
|
|
||||||
-- artist=%a&
|
-- artist_name=%a&
|
||||||
-- track=%t&
|
-- track_name=%t&
|
||||||
-- release=%T
|
-- release_name=%T
|
||||||
-- label=%L&
|
-- label=%L&
|
||||||
-- year=%Y&
|
-- year=%Y&
|
||||||
-- country=%O&
|
-- country=%O&
|
||||||
-- info_url=%U1&
|
-- info_url=%U1&
|
||||||
-- img_url=%U2&
|
-- img_url=%U2&
|
||||||
-- time=%h&
|
-- time=%h&
|
||||||
|
-- duration=%S
|
||||||
|
|
||||||
-- artist=%a&track=%t&release=%Tlabel=%L&year=%Y&country=%O&info_url=%U1&img_url=%U2&time=%h&
|
-- artist_name=%a&track_name=%t&release_name=%Tlabel=%L&year=%Y&country=%O&info_url=%U1&img_url=%U2&time=%h&duration=%S
|
||||||
|
|
||||||
-- ----- --
|
-- ----- --
|
||||||
-- setup --
|
-- setup --
|
||||||
@ -43,15 +44,21 @@ app:match("/spl/:station", function(self)
|
|||||||
print("This is: " .. station["name"])
|
print("This is: " .. station["name"])
|
||||||
end
|
end
|
||||||
|
|
||||||
local artist_name = self.params.artist
|
local artist = nil
|
||||||
local track_name = self.params.track
|
local artist_name = self.params.artist_name
|
||||||
-- local track_length = self.params.length
|
|
||||||
|
local track = nil
|
||||||
|
local track_name = self.params.track_name
|
||||||
local track_info_url = self.params.info_url
|
local track_info_url = self.params.info_url
|
||||||
local track_img_url = self.params.img_url
|
local track_img_url = self.params.img_url
|
||||||
local release_name = self.params.release
|
local track_duration = self.params.duration
|
||||||
|
|
||||||
|
local release = nil
|
||||||
|
local release_name = self.params.release_name
|
||||||
local release_year = self.params.year
|
local release_year = self.params.year
|
||||||
local release_country = self.params.country
|
local release_country = self.params.country
|
||||||
local label_name = self.params.label
|
local release_label = self.params.label
|
||||||
|
|
||||||
local airtime_spl = self.params.time
|
local airtime_spl = self.params.time
|
||||||
|
|
||||||
-- we have to split the `hr:min:sec` string from SPL
|
-- we have to split the `hr:min:sec` string from SPL
|
||||||
@ -62,7 +69,7 @@ app:match("/spl/:station", function(self)
|
|||||||
end
|
end
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
local split_airtime = Split(airtime_spl, ":")
|
local split_airtime = Split(airtime_spl, ":")
|
||||||
local airtime_hr, airtime_min, airtime_sec = split_airtime[1], split_airtime[2], split_airtime[3]
|
local airtime_hr, airtime_min, airtime_sec = split_airtime[1], split_airtime[2], split_airtime[3]
|
||||||
local airtime_stamp = os.time{year=os.date("%Y"), month=os.date("%m"), day=os.date("%d"), hour=airtime_hr, min=airtime_min, sec=airtime_sec}
|
local airtime_stamp = os.time{year=os.date("%Y"), month=os.date("%m"), day=os.date("%d"), hour=airtime_hr, min=airtime_min, sec=airtime_sec}
|
||||||
@ -72,7 +79,7 @@ app:match("/spl/:station", function(self)
|
|||||||
-- queries --
|
-- queries --
|
||||||
-- ------- --
|
-- ------- --
|
||||||
|
|
||||||
local artist = models.Artists:find({ name = artist_name })
|
artist = models.Artists:find({ name = artist_name })
|
||||||
if not artist then
|
if not artist then
|
||||||
print("new artist: " .. artist_name)
|
print("new artist: " .. artist_name)
|
||||||
artist = models.Artists:create({
|
artist = models.Artists:create({
|
||||||
@ -82,25 +89,58 @@ app:match("/spl/:station", function(self)
|
|||||||
print("old artist.")
|
print("old artist.")
|
||||||
end
|
end
|
||||||
|
|
||||||
local track = models.Tracks:find({ unique_name = track_name:lower() })
|
-- make a unique name/identifier for the track using a combination of artist_name and track_name
|
||||||
|
-- in lower-case and spaces removed
|
||||||
|
local unique_track_name = artist_name + track_name
|
||||||
|
unique_track_name = unique_track_name:lower()
|
||||||
|
unique_track_name = unique_track_name:gsub("%s+", "")
|
||||||
|
|
||||||
|
track = models.Tracks:find({ unique_name = unique_track_name })
|
||||||
if not track then
|
if not track then
|
||||||
print("new track: " .. track_name)
|
print("new track: " .. track_name)
|
||||||
track = models.Tracks:create({
|
track = models.Tracks:create({
|
||||||
name = track_name,
|
name = track_name,
|
||||||
unique_name = track_name:lower()
|
unique_name = unique_track_name,
|
||||||
|
year = release_year,
|
||||||
|
info_url = track_info_url,
|
||||||
|
img_url = track_img_url
|
||||||
})
|
})
|
||||||
else
|
else
|
||||||
print("old track.")
|
print("old track.")
|
||||||
end
|
end
|
||||||
|
|
||||||
-- airtime
|
|
||||||
|
|
||||||
|
-- airtime
|
||||||
local airtime = models.Airtimes:create({
|
local airtime = models.Airtimes:create({
|
||||||
airtime = db.format_date(airtime_stamp),
|
airtime = db.format_date(airtime_stamp),
|
||||||
tracks = track["id"],
|
tracks = track["id"],
|
||||||
stations = station["id"]
|
stations = station["id"]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if release_name.len() > 0 then
|
||||||
|
release = models.Releases:find({ name = release_name })
|
||||||
|
if not release then
|
||||||
|
print("new release: " .. release_name)
|
||||||
|
release = models.Releases:create({
|
||||||
|
name = release_name,
|
||||||
|
year = release_year,
|
||||||
|
country = release_country,
|
||||||
|
label = release_label
|
||||||
|
})
|
||||||
|
|
||||||
|
else
|
||||||
|
print("old release.")
|
||||||
|
end
|
||||||
|
|
||||||
|
local track_release = models.TrackReleases:find({ track = track, release = release })
|
||||||
|
if not track_release then
|
||||||
|
track_release = models.TrackReleases:create({ track = track, release = release })
|
||||||
|
end
|
||||||
|
|
||||||
|
else
|
||||||
|
print("no release, skipping")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|||||||
@ -16,9 +16,9 @@ return {
|
|||||||
{"created_at", types.time},
|
{"created_at", types.time},
|
||||||
{"updated_at", types.time},
|
{"updated_at", types.time},
|
||||||
{"name", types.varchar, { unique=true }},
|
{"name", types.varchar, { unique=true }},
|
||||||
{"date", types.date({ null = true })},
|
{"date", types.date({ null=true }) },
|
||||||
{"bio", types.text({ null = true })},
|
{"bio", types.text({ null=true }) },
|
||||||
{"urls", types.text({ null = true })}
|
{"urls", types.text({ null=true }) }
|
||||||
})
|
})
|
||||||
create_index("artists", "name")
|
create_index("artists", "name")
|
||||||
|
|
||||||
@ -29,13 +29,12 @@ return {
|
|||||||
{"updated_at", types.time},
|
{"updated_at", types.time},
|
||||||
{"name", types.varchar},
|
{"name", types.varchar},
|
||||||
{"unique_name", types.varchar},
|
{"unique_name", types.varchar},
|
||||||
{"year", types.integer({ null = true }) }
|
{"year", types.integer({ null=true }) },
|
||||||
-- ("artist", types.foreign_key),
|
{"info_url", types.varchar({ null=true }) },
|
||||||
-- {"releases", types.foreign_key},
|
{"img_url", types.varchar({ null=true }) },
|
||||||
-- {"mixes", types.foreign_key},
|
|
||||||
})
|
})
|
||||||
create_index("tracks", "unique_name", { unique=true })
|
create_index("tracks", "unique_name", { unique=true })
|
||||||
|
|
||||||
-- track_artists
|
-- track_artists
|
||||||
schema.create_table("track_artists", {
|
schema.create_table("track_artists", {
|
||||||
{"id", types.serial, { unique=true, primary_key=true }},
|
{"id", types.serial, { unique=true, primary_key=true }},
|
||||||
@ -45,7 +44,7 @@ return {
|
|||||||
{"artist", types.foreign_key}
|
{"artist", types.foreign_key}
|
||||||
})
|
})
|
||||||
create_index("track_artists", "track", "artist", { unique=true })
|
create_index("track_artists", "track", "artist", { unique=true })
|
||||||
|
|
||||||
-- stations
|
-- stations
|
||||||
schema.create_table("stations", {
|
schema.create_table("stations", {
|
||||||
{"id", types.serial, { unique=true, primary_key=true }},
|
{"id", types.serial, { unique=true, primary_key=true }},
|
||||||
@ -55,28 +54,28 @@ return {
|
|||||||
{"name", types.varchar},
|
{"name", types.varchar},
|
||||||
})
|
})
|
||||||
create_index("stations", "station", "name", { unique=true })
|
create_index("stations", "station", "name", { unique=true })
|
||||||
|
|
||||||
db.insert("stations", {
|
db.insert("stations", {
|
||||||
created_at = os.date(),
|
created_at = os.date(),
|
||||||
updated_at = os.date(),
|
updated_at = os.date(),
|
||||||
station = 1,
|
station = 1,
|
||||||
name = "Cybernetic Broadcasting System"
|
name = "Cybernetic Broadcasting System"
|
||||||
})
|
})
|
||||||
|
|
||||||
db.insert("stations", {
|
db.insert("stations", {
|
||||||
created_at = os.date(),
|
created_at = os.date(),
|
||||||
updated_at = os.date(),
|
updated_at = os.date(),
|
||||||
station = 2,
|
station = 2,
|
||||||
name = "Disco Fetish"
|
name = "Disco Fetish"
|
||||||
})
|
})
|
||||||
|
|
||||||
db.insert("stations", {
|
db.insert("stations", {
|
||||||
created_at = os.date(),
|
created_at = os.date(),
|
||||||
updated_at = os.date(),
|
updated_at = os.date(),
|
||||||
station = 3,
|
station = 3,
|
||||||
name = "The Dream Machine"
|
name = "The Dream Machine"
|
||||||
})
|
})
|
||||||
|
|
||||||
-- airtime
|
-- airtime
|
||||||
schema.create_table("airtimes", {
|
schema.create_table("airtimes", {
|
||||||
{"id", types.serial, { unique=true, primary_key=true }},
|
{"id", types.serial, { unique=true, primary_key=true }},
|
||||||
@ -86,37 +85,37 @@ return {
|
|||||||
{"tracks", types.foreign_key},
|
{"tracks", types.foreign_key},
|
||||||
{"stations", types.foreign_key},
|
{"stations", types.foreign_key},
|
||||||
})
|
})
|
||||||
|
|
||||||
create_index("airtimes", "airtime", "tracks", "stations", { unique=true })
|
create_index("airtimes", "airtime", "tracks", "stations", { unique=true })
|
||||||
-- -- releases
|
|
||||||
-- schema.create_table("releases", {
|
|
||||||
-- {"id", types.serial, { unique=true, primary_key=true }},
|
|
||||||
-- {"created_at", types.time},
|
|
||||||
-- {"updated_at", types.time},
|
|
||||||
-- {"name", types.varchar},
|
|
||||||
-- {"releaseid", types.varchar},
|
|
||||||
-- {"date", types.date},
|
|
||||||
-- })
|
|
||||||
-- create_index("releases", "name", "releaseid", { unique = true })
|
|
||||||
-- labels
|
|
||||||
|
|
||||||
-- -- track_releases
|
-- releases
|
||||||
-- schema.create_table("track_releases", {
|
schema.create_table("releases", {
|
||||||
-- {"id", types.serial, { unique=true, primary_key=true }},
|
{"id", types.serial, { unique=true, primary_key=true }},
|
||||||
-- {"created_at", types.time},
|
{"created_at", types.time},
|
||||||
-- {"updated_at", types.time},
|
{"updated_at", types.time},
|
||||||
-- {"track", types.foreign_key},
|
{"name", types.varchar},
|
||||||
-- {"release", types.foreign_key}
|
{"label", types.varchar({ null=true }) },
|
||||||
-- })
|
{"year", types.integer({ null=true }) },
|
||||||
-- create_index("track_releases", "track", "release", { unique=true })
|
{"country", types.varchar({ null=true }) },
|
||||||
|
})
|
||||||
|
create_index("releases", "name", "releaseid", { unique = true })
|
||||||
|
|
||||||
|
-- track_releases
|
||||||
|
schema.create_table("track_releases", {
|
||||||
|
{"id", types.serial, { unique=true, primary_key=true }},
|
||||||
|
{"created_at", types.time},
|
||||||
|
{"updated_at", types.time},
|
||||||
|
{"track", types.foreign_key},
|
||||||
|
{"release", types.foreign_key}
|
||||||
|
})
|
||||||
|
create_index("track_releases", "track", "release", { unique=true })
|
||||||
|
|
||||||
-- -- labels
|
-- -- labels
|
||||||
-- schema.create_table("labels", {
|
-- schema.create_table("labels", {
|
||||||
-- {"id", types.serial, { unique=true, primary_key=true }},
|
-- {"id", types.serial, { unique=true, primary_key=true }},
|
||||||
-- {"created_at", types.time},
|
-- {"created_at", types.time},
|
||||||
-- {"updated_at", types.time},
|
-- {"updated_at", types.time},
|
||||||
-- {"name", types.varchar},
|
-- {"name", types.varchar},
|
||||||
-- {"date", types.date},
|
-- {"date", types.date({ null=true }) }},
|
||||||
-- })
|
-- })
|
||||||
-- create_index("labels", "name", { unique = true })
|
-- create_index("labels", "name", { unique = true })
|
||||||
|
|
||||||
@ -158,11 +157,11 @@ return {
|
|||||||
create_index("users", "email", { unique = true })
|
create_index("users", "email", { unique = true })
|
||||||
|
|
||||||
-- favorite_tracks
|
-- favorite_tracks
|
||||||
-- favorite_mixes
|
|
||||||
-- favorite_artists
|
-- favorite_artists
|
||||||
-- favorite_releases
|
-- favorite_releases
|
||||||
-- favorite_labels
|
-- favorite_labels
|
||||||
|
-- favorite_mixes
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user