<?php

namespace SHServ\Factory;

use \SHServ\Entities\Profile;
use \SHServ\Entities\User;
use \SHServ\Entities\Meta;

class Creator {
	public function create_user(String $alias, String $email, String $password) {
		$password_hash = password_hash($password, PASSWORD_ARGON2ID);

		$uid = app() -> thin_builder -> insert(User::$table_name, [
			"alias" => $alias,
			"email" => $email,
			"password" => $password_hash,
			"create_at" => date("Y-m-d H:i:s")
		]);

		return $uid ? new User($uid) : null;
	}

	public function create_profile(Int $uid) {
		$profile_id = app() -> thin_builder -> insert(Profile::$table_name, [
			"uid" => $uid,
			"create_at" => date("Y-m-d H:i:s")
		]);

		return $profile_id ? new Profile($profile_id) : null;
	}

	public function create_meta(Int $ent_id, String $assignment, String $name, $value): Meta {
		$data = [
			"ent_id" => $ent_id,
			"assignment" => $assignment,
			"name" => $name,
			"value" => $value,
			"create_at" => date("Y-m-d H:i:s")
		];

		$meta_id = app() -> thin_builder -> insert(Meta::$table_name, $data);

		return new Meta($meta_id, array_merge(
			[
				"id" => $meta_id, 
				"update_at" => $data["create_at"]
			],
			$data
		));
	}
}