Newer
Older
smart-home-server / server / SHServ / Models / Meta.php
<?php

namespace SHServ\Models;

use \SHServ\Entities\Meta;

class MetaManager extends \SHServ\Middleware\Model {
	public function get_all_by_entity(String $assignment, int $ent_id): Array {
		$result = $this -> thin_builder() -> select(
			Meta::$table_name,
			Meta::get_fields(),
			[
				[ "assignment", "=", $assignment ],
				"AND",
				[ "ent_id", "=", $ent_id ]
			]
		);

		if(!$result) {
			return [];
		}

		return array_map(function ($item) {
			return new Meta($item["id"], $item);
		}, $result);
	}

	public function get_one_by_name(String $name, String $assignment, int $ent_id): Meta | null {
		$result = $this -> thin_builder() -> select(
			Meta::$table_name,
			Meta::get_fields(),
			[
				[ "assignment", "=", $assignment ],
				"AND",
				[ "ent_id", "=", $ent_id ],
				"AND",
				[ "name", "=", $name ]
			]
		);

		if(!$result) {
			return null;
		}

		return new Meta($ent_id, $result[0]);
	}

	public function remove_all_by_entity(String $assignment, int $ent_id): bool {
		return $this -> thin_builder() -> delete(
			Meta::$table_name,
			[
				[ "assignment", "=", $assignment ],
				"AND",
				[ "ent_id", "=", $ent_id ]
			]
		);
	}

	public function create(String $name, String $value, String $assignment, int $ent_id): int {
		$result = $this -> thin_builder() -> insert(
			Meta::$table_name,
			[
				"name" => $name,
				"value" => $value,
				"assignment" => $assignment,
				"ent_id" => $ent_id,
				"create_at" => date("Y-m-d H:i:s")
			]
		);

		return $result ? $result : 0;
	}

	public function create_or_update(String $name, String $value, String $assignment, int $ent_id): Meta | bool {
		// ???
	}
}