/*
* Copyright (c) 2012, Mayocat <hello@mayocat.org>
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package mayoapp.dao;
import java.util.List;
import java.util.UUID;
import org.mayocat.image.model.Thumbnail;
import org.mayocat.image.store.jdbi.mapper.ThumbnailMapper;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.sqlobject.mixins.Transactional;
import org.skife.jdbi.v2.sqlobject.stringtemplate.UseStringTemplate3StatementLocator;
import org.skife.jdbi.v2.unstable.BindIn;
/**
* @version $Id: a96c89ddd1a2b4e314aaabfa83cbd434a3444194 $
*/
@RegisterMapper(ThumbnailMapper.class)
@UseStringTemplate3StatementLocator
public interface ThumbnailDAO extends Transactional<ThumbnailDAO>
{
@SqlUpdate
(
"INSERT INTO thumbnail " +
" (attachment_id, " +
" source, " +
" hint, " +
" ratio, " +
" x, " +
" y," +
" width," +
" height) " +
"VALUES (:thumbnail.attachmentId, " +
" :thumbnail.source, " +
" :thumbnail.hint, " +
" :thumbnail.ratio, " +
" :thumbnail.x, " +
" :thumbnail.y, " +
" :thumbnail.width, " +
" :thumbnail.height) "
)
void createThumbnail(@BindBean("thumbnail") Thumbnail thumbnail);
@SqlUpdate
(
"UPDATE thumbnail " +
"SET x = :thumbnail.x, " +
" y = :thumbnail.y, " +
" width = :thumbnail.width, " +
" height = :thumbnail.height," +
" ratio = :thumbnail.ratio " +
"WHERE thumbnail.attachment_id = :thumbnail.attachmentId " +
" AND thumbnail.source = :thumbnail.source " +
" AND thumbnail.hint = :thumbnail.hint"
)
Integer updateThumbnail(@BindBean("thumbnail") Thumbnail thumbnail);
@SqlQuery(
"SELECT attachment_id, " +
" source, " +
" hint, " +
" ratio, " +
" x, " +
" y, " +
" width, " +
" height " +
"FROM thumbnail " +
"WHERE attachment_id = :id" +
" AND source = :source " +
" AND hint = :hint " +
" AND ratio = :ratio"
)
Thumbnail findThumbnail(@Bind("id") UUID id, @Bind("source") String source, @Bind("hint") String hint,
@Bind("ratio") String ratio);
@SqlQuery(
"SELECT attachment_id, " +
" source, " +
" hint, " +
" ratio, " +
" x, " +
" y, " +
" width, " +
" height " +
"FROM thumbnail " +
"WHERE attachment_id = :id" +
" AND source = :source " +
" AND hint = :hint"
)
Thumbnail findThumbnail(@Bind("id") UUID id, @Bind("source") String source, @Bind("hint") String hint);
@SqlQuery
(
"SELECT attachment_id, " +
" source, " +
" hint, " +
" ratio, " +
" x, " +
" y, " +
" width, " +
" height " +
"FROM thumbnail " +
"WHERE attachment_id = :attachment"
)
List<Thumbnail> findThumbnails(@Bind("attachment") UUID id);
@SqlQuery
(
"SELECT attachment_id, " +
" source, " +
" hint, " +
" ratio, " +
" x, " +
" y, " +
" width, " +
" height " +
"FROM thumbnail " +
"WHERE attachment_id in ( <ids> )"
)
List<Thumbnail> findAllThumbnails(@BindIn("ids") List<UUID> ids);
@SqlUpdate
(
"DELETE FROM thumbnail " +
"WHERE attachment_id = :attachment"
)
Integer deleteThumbnails(@Bind("attachment") UUID id);
}