read_replica = $this->load->database('savvy_replica', TRUE); parent::__construct(); } public function getQueryAll() { $query = "SELECT id, screen_name, trigger_id, '
' as status, 'Edit' || 'Delete' as action FROM screen_cards ORDER By id asc"; return $query; } public function getById($id) { $this->read_replica->select('id, screen_name, trigger_id, status'); $this->read_replica->from('screen_cards'); $this->read_replica->where('id', $id); $this->read_replica->order_by('id', 'asc'); return $this->read_replica->get()->row(); } public function toggle($id, $cur_status) { //1. check $this->read_replica->select('status'); $this->read_replica->from('screen_cards'); $this->read_replica->where('id', $id); $db_status = $this->read_replica->get()->row('status'); $this->read_replica->reset_query(); //2. update $new_status = $db_status == 1 ? 0 : 1; $data = array( 'status' => $new_status, ); $this->db->where('id', $id); $rs = $this->db->update('screen_cards', $data); return $rs; } public function create_or_update($data) { $is_exists = $this->is_exists($data['id'], $data['screen_name'], $data['trigger_id']); if($is_exists){ return false; } if (empty($data['id'])) { $data = array( 'screen_name' => $data['screen_name'], 'trigger_id' => $data['trigger_id'], 'status' => isset($data['status']) && $data['status'] == 1 ? 1 : 0, ); $rs = $this->db->insert('screen_cards', $data); } else { $this->db->set('screen_name', $data['screen_name']); $this->db->set('trigger_id', $data['trigger_id']); $this->db->set('status', isset($data['status']) && $data['status'] == 1 ? 1 : 0); $this->db->where('id', $data['id']); $rs = $this->db->update('screen_cards'); } return $rs; } public function delete($id) { $rs = $this->db->delete('screen_cards', array('id' => $id)); return $rs; } public function is_exists($id, $screen_name, $trigger_id){ if(!empty($id)){ $query = $this->read_replica->query('SELECT EXISTS(SELECT * FROM screen_cards WHERE id != ? AND screen_name = ? AND trigger_id = ?) AS check;', [$id, $screen_name, $trigger_id]); }else{ $query = $this->read_replica->query('SELECT EXISTS(SELECT * FROM screen_cards WHERE screen_name = ? AND trigger_id = ?) AS check;', [$screen_name, $trigger_id]); } $rs = (array)$query->row(); return $rs['check'] == 't'; } }