feat: add deployments api
This commit is contained in:
parent
515d401746
commit
c7f15c42fa
@ -9,13 +9,32 @@
|
|||||||
use App\Actions\Database\StartRedis;
|
use App\Actions\Database\StartRedis;
|
||||||
use App\Actions\Service\StartService;
|
use App\Actions\Service\StartService;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\ApplicationDeploymentQueue;
|
||||||
|
use App\Models\Server;
|
||||||
use App\Models\Tag;
|
use App\Models\Tag;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Collection;
|
|
||||||
use Visus\Cuid2\Cuid2;
|
use Visus\Cuid2\Cuid2;
|
||||||
|
|
||||||
class Deploy extends Controller
|
class Deploy extends Controller
|
||||||
{
|
{
|
||||||
|
public function deployments(Request $request) {
|
||||||
|
$teamId = get_team_id_from_token();
|
||||||
|
if (is_null($teamId)) {
|
||||||
|
return invalid_token();
|
||||||
|
}
|
||||||
|
$servers = Server::whereTeamId($teamId)->get();
|
||||||
|
$deployments_per_server = ApplicationDeploymentQueue::whereIn("status", ["in_progress", "queued"])->whereIn("server_id", $servers->pluck("id"))->get([
|
||||||
|
"id",
|
||||||
|
"application_id",
|
||||||
|
"application_name",
|
||||||
|
"deployment_url",
|
||||||
|
"pull_request_id",
|
||||||
|
"server_name",
|
||||||
|
"server_id",
|
||||||
|
"status"
|
||||||
|
])->sortBy('id')->toArray();
|
||||||
|
return response()->json($deployments_per_server, 200);
|
||||||
|
}
|
||||||
public function deploy(Request $request)
|
public function deploy(Request $request)
|
||||||
{
|
{
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
@ -27,7 +46,7 @@ public function deploy(Request $request)
|
|||||||
return response()->json(['error' => 'You can only use uuid or tag, not both.', 'docs' => 'https://coolify.io/docs/api/deploy-webhook'], 400);
|
return response()->json(['error' => 'You can only use uuid or tag, not both.', 'docs' => 'https://coolify.io/docs/api/deploy-webhook'], 400);
|
||||||
}
|
}
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
if ($tags) {
|
if ($tags) {
|
||||||
return $this->by_tags($tags, $teamId, $force);
|
return $this->by_tags($tags, $teamId, $force);
|
||||||
|
@ -13,7 +13,7 @@ public function domains(Request $request)
|
|||||||
{
|
{
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
$projects = ModelsProject::where('team_id', $teamId)->get();
|
$projects = ModelsProject::where('team_id', $teamId)->get();
|
||||||
$domains = collect();
|
$domains = collect();
|
||||||
|
@ -12,7 +12,7 @@ public function projects(Request $request)
|
|||||||
{
|
{
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
$projects = ModelsProject::whereTeamId($teamId)->select('id', 'name', 'uuid')->get();
|
$projects = ModelsProject::whereTeamId($teamId)->select('id', 'name', 'uuid')->get();
|
||||||
return response()->json($projects);
|
return response()->json($projects);
|
||||||
@ -21,7 +21,7 @@ public function project_by_uuid(Request $request)
|
|||||||
{
|
{
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
$project = ModelsProject::whereTeamId($teamId)->whereUuid(request()->uuid)->first()->load(['environments']);
|
$project = ModelsProject::whereTeamId($teamId)->whereUuid(request()->uuid)->first()->load(['environments']);
|
||||||
return response()->json($project);
|
return response()->json($project);
|
||||||
@ -30,7 +30,7 @@ public function environment_details(Request $request)
|
|||||||
{
|
{
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
$project = ModelsProject::whereTeamId($teamId)->whereUuid(request()->uuid)->first();
|
$project = ModelsProject::whereTeamId($teamId)->whereUuid(request()->uuid)->first();
|
||||||
$environment = $project->environments()->whereName(request()->environment_name)->first()->load(['applications', 'postgresqls', 'redis', 'mongodbs', 'mysqls', 'mariadbs', 'services']);
|
$environment = $project->environments()->whereName(request()->environment_name)->first()->load(['applications', 'postgresqls', 'redis', 'mongodbs', 'mysqls', 'mariadbs', 'services']);
|
||||||
|
@ -12,7 +12,7 @@ public function resources(Request $request)
|
|||||||
{
|
{
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
$projects = Project::where('team_id', $teamId)->get();
|
$projects = Project::where('team_id', $teamId)->get();
|
||||||
$resources = collect();
|
$resources = collect();
|
||||||
|
@ -12,7 +12,7 @@ public function servers(Request $request)
|
|||||||
{
|
{
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
$servers = ModelsServer::whereTeamId($teamId)->select('id', 'name', 'uuid', 'ip', 'user', 'port')->get()->load(['settings'])->map(function ($server) {
|
$servers = ModelsServer::whereTeamId($teamId)->select('id', 'name', 'uuid', 'ip', 'user', 'port')->get()->load(['settings'])->map(function ($server) {
|
||||||
$server['is_reachable'] = $server->settings->is_reachable;
|
$server['is_reachable'] = $server->settings->is_reachable;
|
||||||
@ -26,7 +26,7 @@ public function server_by_uuid(Request $request)
|
|||||||
$with_resources = $request->query('resources');
|
$with_resources = $request->query('resources');
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
$server = ModelsServer::whereTeamId($teamId)->whereUuid(request()->uuid)->first();
|
$server = ModelsServer::whereTeamId($teamId)->whereUuid(request()->uuid)->first();
|
||||||
if (is_null($server)) {
|
if (is_null($server)) {
|
||||||
|
@ -11,7 +11,7 @@ public function teams(Request $request)
|
|||||||
{
|
{
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
$teams = auth()->user()->teams;
|
$teams = auth()->user()->teams;
|
||||||
return response()->json($teams);
|
return response()->json($teams);
|
||||||
@ -21,7 +21,7 @@ public function team_by_id(Request $request)
|
|||||||
$id = $request->id;
|
$id = $request->id;
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
$teams = auth()->user()->teams;
|
$teams = auth()->user()->teams;
|
||||||
$team = $teams->where('id', $id)->first();
|
$team = $teams->where('id', $id)->first();
|
||||||
@ -35,7 +35,7 @@ public function members_by_id(Request $request)
|
|||||||
$id = $request->id;
|
$id = $request->id;
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
$teams = auth()->user()->teams;
|
$teams = auth()->user()->teams;
|
||||||
$team = $teams->where('id', $id)->first();
|
$team = $teams->where('id', $id)->first();
|
||||||
@ -48,7 +48,7 @@ public function current_team(Request $request)
|
|||||||
{
|
{
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
$team = auth()->user()->currentTeam();
|
$team = auth()->user()->currentTeam();
|
||||||
return response()->json($team);
|
return response()->json($team);
|
||||||
@ -56,7 +56,7 @@ public function current_team(Request $request)
|
|||||||
public function current_team_members(Request $request) {
|
public function current_team_members(Request $request) {
|
||||||
$teamId = get_team_id_from_token();
|
$teamId = get_team_id_from_token();
|
||||||
if (is_null($teamId)) {
|
if (is_null($teamId)) {
|
||||||
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
return invalid_token();
|
||||||
}
|
}
|
||||||
$team = auth()->user()->currentTeam();
|
$team = auth()->user()->currentTeam();
|
||||||
return response()->json($team->members);
|
return response()->json($team->members);
|
||||||
|
@ -5,3 +5,7 @@ function get_team_id_from_token()
|
|||||||
$token = auth()->user()->currentAccessToken();
|
$token = auth()->user()->currentAccessToken();
|
||||||
return data_get($token, 'team_id');
|
return data_get($token, 'team_id');
|
||||||
}
|
}
|
||||||
|
function invalid_token()
|
||||||
|
{
|
||||||
|
return response()->json(['error' => 'Invalid token.', 'docs' => 'https://coolify.io/docs/api/authentication'], 400);
|
||||||
|
}
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
return response(config('version'));
|
return response(config('version'));
|
||||||
});
|
});
|
||||||
Route::get('/deploy', [Deploy::class, 'deploy']);
|
Route::get('/deploy', [Deploy::class, 'deploy']);
|
||||||
|
Route::get('/deployments', [Deploy::class, 'deployments']);
|
||||||
|
|
||||||
Route::get('/servers', [Server::class, 'servers']);
|
Route::get('/servers', [Server::class, 'servers']);
|
||||||
Route::get('/server/{uuid}', [Server::class, 'server_by_uuid']);
|
Route::get('/server/{uuid}', [Server::class, 'server_by_uuid']);
|
||||||
|
Loading…
Reference in New Issue
Block a user