7cd852206b91fc1f5319b9405ba9608ecf5c1557
[rock.divinelegy.git] / DataAccess / StepMania / SimfileRepository.php
1 <?php
2
3 namespace DataAccess\StepMania;
4
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;
10
11 //TODO: Implement some sort of caching. Probably OK for now not to worry.
12 class SimfileRepository implements ISimfileRepository
13 {
14 private $_dataMapper;
15 private $_queryBuilderFactory;
16
17 public function __construct(IDataMapper $dataMapper, IQueryBuilderFactory $queryBuilderFactory) {
18 $this->_dataMapper = $dataMapper;
19 $this->_queryBuilderFactory = $queryBuilderFactory;
20 }
21
22 public function findById($id) {
23 return $this->_dataMapper->map(
24 'Simfile',
25 'SELECT * FROM %s WHERE id=' . $id
26 );
27 }
28
29 public function findRange($id, $limit)
30 {
31 return $this->_dataMapper->findRange(
32 'Simfile',
33 'SELECT * FROM %s WHERE id>=' . $id . ' LIMIT ' . $limit
34 );
35 }
36
37 public function save(ISimfile $entity) {
38 $this->_dataMapper->save($entity);
39 }
40
41 //TODO: Implement
42 public function remove(ISimfile $entity) {
43 ;
44 }
45
46 public function findByTitle($title, ISimfileQueryConstraints $constraints = NULL)
47 {
48 $queryBuilder = $this->_queryBuilderFactory->createInstance();
49 $queryBuilder->where('title', 'LIKE', "%%$title%%");
50
51 if($constraints)
52 {
53 $constraints->applyTo($queryBuilder);
54 }
55
56 return $this->_dataMapper->map('Simfile', $queryBuilder);
57 }
58
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){}
67 }