У меня есть альбом класса doman и фото. В моей базе данных альбом имеет: id, имя и user_id и фото: id, Album_id, имя и тип. Когда пользователь входит в систему, grails создает папку с именем в качестве имени пользователя и сохраняет там изображения (в папке веб-приложения в grails, а не в базе данных). Теперь мне нужно получить эти изображения с помощью jQuery API в моем веб-приложении. мой контроллер API выглядит так:
def getAlbumsList(){
def resultJSON = [:]
try{
int userId
try{
userId = params.int('userId')
}
catch(Exception e){}
def conn = sessionFactory.currentSession.connection()
def sql = new Sql(conn)
def albumList = sql.rows("SELECT ab.a_name, MAX(p.p_name) as p_name FROM album ab INNER JOIN photo p ON ab.id = p.album_id WHERE ab.user_id = ?", userId)
sql.close()
def albums = []
for(album in albumList){
albums << [albumName: album.a_name, lastPhoto: grailsApplication.mainContext.getResource("album/" + album?.p_name + ".jpg")?.file?.absolutePath]
}
resultJSON = [msg: 1, albums: albums]
}
catch(Exception e){
resultJSON = [msg: 0, ex: e.getMessage() + " " + e?.getCause() ]
}
render resultJSON as JSON
}
/*
* Get photos for user.
*
* <p>
* @param userId id of user
*
* <p>
* @return [msg: 1, photos: (Photo url data)] or [msg: 0, ex: Exception description ]
*
* <p>
* @see Photo
* @see User
*
*/
def getAlbumPhotosList(){
def resultJSON
try{
int userId
try{
userId = params.int('userId')
}
catch(Exception e){}
def conn = sessionFactory.currentSession.connection()
def sql = new Sql(conn)
def photosList = sql.rows("SELECT p.p_name FROM album ab INNER JOIN photo p ON ab.id = p.album_id WHERE ab.user_id = ?", userId)
def photos = []
for(photo in photosList){
photos << grailsApplication.mainContext.getResource("album/" + photo?.p_name + ".jpg")?.file?.absolutePath
}
resultJSON = [msg: 1, photos: photos]
sql.close()
}
catch(Exception e){
resultJSON = [msg: 0, ex: e.getMessage() + " " + e.getCause() ]
}
render resultJSON as JSON
}
}
Могу ли я это сделать и как? Спасибо за ответ и извините за мой английский