/** * DAO for {@link com.qubole.quark.catalog.db.RelSchema.DbDimension} */ @RegisterMapper(DimensionMapper.class) public interface DimensionDAO { @SqlQuery("select name, schema_name, table_name, column_name, " + "cube_column_name, dimension_order, parent_dimension as " + "parent from dimensions where cube_id = :cube_id") List<RelSchema.DbDimension> findByCubeId(@Bind("cube_id") long cubeId); }
public SqlStatementCustomizer createForMethod(Annotation annotation, Class sqlObjectType, Method method) { final RegisterMapper ma = (RegisterMapper) annotation; final ResultSetMapper[] m = new ResultSetMapper[ma.value().length]; try { Class<? extends ResultSetMapper<?>>[] mcs = ma.value(); for (int i = 0; i < mcs.length; i++) { m[i] = mcs[i].newInstance(); } } catch (Exception e) { throw new IllegalStateException("unable to create a specified result set mapper", e); } return new SqlStatementCustomizer() { public void apply(SQLStatement statement) { if (statement instanceof Query) { Query q = (Query) statement; for (ResultSetMapper mapper : m) { q.registerMapper(mapper); } } } }; }
/** * DAO for {@link Cube} */ @RegisterMapper(CubeMapper.class) public interface CubeDAO { @SqlQuery("select c.id, c.name, c.query, c.schema_name, c.table_name, c.grouping_column, ds.name" + " as destination from data_sources ds join cubes c on ds.id = c.destination_id " + "where ds.ds_set_id = :ds_set_id") List<Cube> findByDSSetId(@Bind("ds_set_id") long dsSetId); }
/** * DAO for {@link DSSet} */ @RegisterMapper(DSSetMapper.class) public interface DSSetDAO { @SqlQuery("select id, name, default_datasource_id from ds_sets") List<DSSet> findAll(); @SqlQuery("select id, name, default_datasource_id from ds_sets where id = :id") DSSet find(@Bind("id") int id); }
/** * DAO for {@link com.qubole.quark.catalog.db.RelSchema.DbMeasure} */ @RegisterMapper(MeasureMapper.class) public interface MeasureDAO { @SqlQuery("select id, column_name, function, cube_column_name from " + "measures where cube_id = :cube_id") List<RelSchema.DbMeasure> findByCubeId(@Bind("cube_id") long cubeId); }
@RegisterMapper(Mappers.ServiceModelMapper.class) public interface ServiceDB { @SqlQuery("select * from service where name = :service.serviceId and dependency = :service.dependencyId") ServiceModel find(@BindBean("service") ServiceModel service); @SqlUpdate("insert into service (name, dependency) values (:service.serviceId, :service.dependencyId)") int insert(@BindBean("service") ServiceModel service); @SqlUpdate("delete from service where name = :service.serviceId and dependency = :service.dependencyId") int delete(@BindBean("service") ServiceModel serviceModel); @SqlQuery("select * from service") ImmutableList<ServiceModel> all(); @SqlQuery("select * from service where name = :serviceId.id") ImmutableList<ServiceModel> all(@BindBean("serviceId") ServiceId serviceId); }
/** * Internal Team -> Person association dao */ @RegisterMapper(PersonAddressMapper.class) interface PersonAddressDao extends Transactional<PersonAddressDao> { @SqlUpdate("insert into PERSON_ADDRESS (personId, addressId) values (:pa.personId, :pa.addressId)") @GetGeneratedKeys long insert(@BindBean("pa") PersonAddressAssoc personAddressAssoc); @SqlQuery("select * from PERSON_ADDRESS where personId = :personId") List<PersonAddressAssoc> findByPersonId(@Bind("personId") Long personId); @SqlUpdate("delete from PERSON_ADDRESS where personId = :pa.personId and addressId = :pa.addressId") void delete(@BindBean("pa") PersonAddressAssoc personAddressAssoc); } }
@RegisterMapper(Mappers.DependencyModelMapper.class) public interface DependencyDB { @SqlQuery("select * from dependency where name = :dependency.id and timestamp = :timestamp.millis") DependencyModel find(@BindBean("dependency") DependencyId dependencyId, @BindBean("timestamp") DateTime timestamp); @SqlUpdate("insert into dependency (name, timestamp, tenacity_configuration, username, service) values " + "(:dependency.dependencyId, :dependency.dateTime, :dependency.tenacityConfiguration," + " :dependency.user, :dependency.serviceId)") int insert(@BindBean("dependency") DependencyModel dependencyModel); @SqlUpdate("delete from dependency where name = :dependency.id and timestamp = :timestamp.millis") int delete(@BindBean("dependency") DependencyId dependencyId, @BindBean("timestamp") DateTime timestamp); @SqlQuery("select * from dependency where name = :dependency.id and service = :service.id order by timestamp desc limit 1") DependencyModel findLatest(@BindBean("dependency") DependencyId dependencyId, @BindBean("service") ServiceId serviceId); @SqlQuery("select * from dependency where name = :dependency.id and service = :service.id order by timestamp desc") ImmutableList<DependencyModel> all(@BindBean("dependency") DependencyId dependencyId, @BindBean("service") ServiceId serviceId); }
/** * Internal Team -> Person association dao */ @RegisterMapper(PersonAddressMapper.class) interface PersonAddressDao { @SqlUpdate("insert into PERSON_ADDRESS (personId, addressId) values (:pa.personId, :pa.addressId)") @GetGeneratedKeys @Transaction long insert(@BindBean("pa") PersonAddressAssoc personAddressAssoc); @SqlUpdate("delete from PERSON_ADDRESS where personId = :pa.personId and addressId = :pa.addressId") @Transaction void delete(@BindBean("pa") PersonAddressAssoc personAddressAssoc); } }
/** * Internal Team -> Person association dao */ @RegisterMapper(PersonAddressMapper.class) interface PersonAddressDao { @SqlUpdate("insert into PERSON_ADDRESS (personId, addressId) values (:pa.personId, :pa.addressId)") @GetGeneratedKeys @Transaction long insert(@BindBean("pa") PersonAddressAssoc personAddressAssoc); @SqlQuery("select * from PERSON_ADDRESS where personId = :personId") List<PersonAddressAssoc> findByPersonId(@Bind("personId") Long personId); @SqlUpdate("delete from PERSON_ADDRESS where personId = :pa.personId and addressId = :pa.addressId") @Transaction void delete(@BindBean("pa") PersonAddressAssoc personAddressAssoc); } }
/** * Internal Team -> Person association dao */ @RegisterMapper(TeamPersonMapper.class) interface TeamPersonDao extends Transactional<TeamPersonDao> { final static String TEAM_PERSON_TABLE_NAME = "TEAM_PERSON"; final static String createTeamPersonMappingTableSql = "create table TEAM_PERSON (" + "teamId integer REFERENCES TEAM, " + "personId integer REFERENCES PERSON, " + "PRIMARY KEY (teamId, personId) );"; @SqlUpdate("insert into TEAM_PERSON (teamId, personId) values (:tp.teamId, :tp.personId)") @GetGeneratedKeys long insert(@BindBean("tp") TeamPerson teamPerson); @SqlQuery("select * from TEAM_PERSON where teamId = :teamId") List<TeamPerson> findByTeamId(@Bind("teamId") Long teamId); @SqlUpdate("delete from TEAM where teamId = :tp.teamId and personId = :tp.personId") void delete(@BindBean("tp") TeamPerson teamPerson); }
@RegisterMapper(TodoMapper.class) public interface TodoDao { @SqlUpdate("create table if not exists todos(id varchar(36) primary key, json text)") void createTableIfNotExists(); @SqlQuery("select json from todos") List<Todo> findAll(); @SqlQuery("select json from todos where id = :id") Todo findById(@Bind("id") String id); @SqlQuery("select exists(select 1 from todos where id = :id)") boolean exists(@Bind("id") String id); @SqlUpdate("insert into todos(id, json) values (:id, :json)") void insert(@BindTodo Todo todo); @SqlUpdate("update todos set json = :json where id= :id") void update(@BindTodo Todo todo); @SqlUpdate("delete from todos where id = :id") void delete(@Bind("id") String id); @SqlUpdate("delete from todos") void deleteAll(); void close(); }
@RegisterMapper(AddressMapper.class) private interface AddressDao extends Transactional<AddressDao> { @SqlQuery("select * from ADDRESS where addressId = :id") @RegisterMapper(ExistsMapper.class) public abstract boolean exists(@Bind("id") Long id); @SqlQuery("select count(*) from ADDRESS") public abstract int count(); @SqlUpdate("insert into ADDRESS (streetAddress, postalCode, postalPlace) values (:a.streetAddress, :a.postalCode, :a.postalPlace)") @GetGeneratedKeys long insert(@BindBean("a") Address address); @SqlUpdate("update ADDRESS set streetAddress = :a.streetAddress, postalCode = :a.postalCode, postalPlace = :a.postalPlace where addressId = :a.id") void update(@BindBean("a") Address address); @SqlQuery("select * from ADDRESS where addressId = :id") Address get(@Bind("id") long id); @SqlQuery("select * from ADDRESS") List<Address> getAll(); @SqlUpdate("delete from ADDRESS where addressId = :id") void deleteById(@Bind("id") long id); } }
/** * @version $Id: 3d0a485696f8b86a3b377acd3dfcc9bb34745ce4 $ */ @RegisterMapper(HomePageMapper.class) public abstract class HomePageDAO implements EntityDAO<HomePage>, Transactional<HomePageDAO>, AddonsDAO<HomePage>, LocalizationDAO<HomePage> { @SqlQuery ( "SELECT entity.*, localization_data(entity.id) FROM entity " + "WHERE entity.slug = 'home' AND entity.type = 'home' AND tenant_id IS NULL" ) public abstract HomePage find(); @SqlQuery ( "SELECT entity.*, localization_data(entity.id) FROM entity " + "WHERE entity.slug = 'home' AND entity.type = 'home' AND tenant_id IS NOT DISTINCT FROM :tenantId" ) public abstract HomePage find(@Bind("tenantId") UUID tenantId); public void createOrUpdateAddons(HomePage entity) { AddonsHelper.createOrUpdateAddons(this, entity); } }
/** * Internal Person JDBI dao. */ @RegisterMapper(PersonMapper.class) private interface PersonDao extends Transactional<PersonDao> { @SqlUpdate("insert into PERSON (name, email, phone) values (:p.name, :p.emailVal, :p.phone)") @GetGeneratedKeys long insert(@BindBean("p") Person person); @SqlUpdate("update PERSON set name = :p.name, email = :p.emailVal, phone = :p.phone where personId = :p.id") void update(@BindBean("p") Person person); @SqlQuery("select * from PERSON where personId = :id") Person get(@Bind("id") long id); @SqlQuery("select count(*) from PERSON") int count(); @SqlQuery("select * from PERSON where name like :name") List<Person> findByName(@Bind("name") String name); @SqlQuery("select * from PERSON where email like :email") List<Person> findByEmail(@Bind("email") String email); @SqlQuery("select * from PERSON") List<Person> getAll(); @SqlUpdate("delete from PERSON where personId = :id") void deleteById(@Bind("id") long id); }
@RegisterMapper(SomethingMapper.class) interface Cromulence { @SqlQuery Something findById(@Bind("id") Long id); }
@RegisterMapper(MySomethingMapper.class) public static interface Kabob { @SqlUpdate("insert into something (id, name) values (:id, :name)") public void insert(@Bind("id") int id, @Bind("name") String name); @SqlQuery("select id, name from something where id = :id") public Something find(@Bind("id") int id); @SqlQuery("select id, name from something order by id") public List<Something> listAll(); @SqlQuery("select id, name from something order by id") public Iterator<Something> iterateAll(); }
@RegisterMapper(TimestampMapper.class) private interface SomethingSqlDao { @SqlUpdate("insert into something (id, name, created_dt) values (:id, :name, :createdDt)") public void create(@Bind("id") final int id, @Bind("name") final String name, @Bind("createdDt") final DateTime dateTime); @SqlQuery("select created_dt from something where id = :id") public Timestamp getCreatedDt(@Bind("id") final int id); } }
@RegisterMapper(SomethingMapper.class) public static interface DB { @SqlBatch("insert into something (id, name) values(:id, :name)") public void insert(@BindBean Something... things); @SqlQuery("select id, name from something where name = :breakfast.waffle.topping limit 1") public Something findByBreakfast(@BindRoot("breakfast") Breakfast b); }
@RegisterMapper(SomethingMapper.class) public static abstract class Dao { @SqlUpdate("insert into something (id, name) values (:id, :name)") public abstract void insert(@Bind("id") int id, @Bind("name") String name); @SqlQuery("select id, name from something where id = :id") public abstract Something findById(@Bind("id") int id); public Something findByIdHeeHee(int id) { return findById(id); } public abstract void totallyBroken(); }