3 namespace DataAccess\StepMania
;
5 use DataAccess\StepMania\ISimfileRepository
;
6 use DataAccess\DataMapper\IDataMapper
;
7 use DataAccess\Queries\IQueryBuilderFactory
;
8 use DataAccess\Queries\StepMania\ISimfileQueryConstraints
;
9 use Domain\Entities\StepMania\ISimfile
;
11 //TODO: Implement some sort of caching. Probably OK for now not to worry.
12 class SimfileRepository
implements ISimfileRepository
15 private $_queryBuilderFactory;
17 public function __construct(IDataMapper
$dataMapper, IQueryBuilderFactory
$queryBuilderFactory) {
18 $this->_dataMapper
= $dataMapper;
19 $this->_queryBuilderFactory
= $queryBuilderFactory;
22 public function findById($id) {
23 return $this->_dataMapper
->map(
25 'SELECT * FROM %s WHERE id=' . $id
29 public function findRange($id, $limit)
31 return $this->_dataMapper
->findRange(
33 'SELECT * FROM %s WHERE id>=' . $id . ' LIMIT ' . $limit
37 public function save(ISimfile
$entity) {
38 $this->_dataMapper
->save($entity);
42 public function remove(ISimfile
$entity) {
46 public function findByTitle($title, ISimfileQueryConstraints
$constraints = NULL
)
48 $queryBuilder = $this->_queryBuilderFactory
->createInstance();
49 $queryBuilder->where('title', 'LIKE', "%%$title%%");
53 $constraints->applyTo($queryBuilder);
56 return $this->_dataMapper
->map('Simfile', $queryBuilder);
59 public function findByArtist($artist){}
60 public function findByBpm($high, $low){}
61 public function findByStepArtist($artistName){}
62 public function findByLightMeter($feet){}
63 public function findByBeginnerMeter($feet){}
64 public function findByMediumMeter($feet){}
65 public function findByHardMeter($feet){}
66 public function findByExpertMeter($feet){}