Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PCBC-832: Management API - Analytics Management #177

Merged
merged 4 commits into from
Sep 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions Couchbase/Cluster.php
Original file line number Diff line number Diff line change
Expand Up @@ -265,12 +265,11 @@ public function users(): UserManager
* Creates a new manager object for managing analytics query indexes.
*
* @return AnalyticsIndexManager
* @throws UnsupportedOperationException
* @since 4.0.0
*/
public function analyticsIndexes(): AnalyticsIndexManager
{
throw new UnsupportedOperationException();
return new AnalyticsIndexManager($this->core);
}

/**
Expand Down
124 changes: 124 additions & 0 deletions Couchbase/Management/AnalyticsDataset.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
<?php

/**
* Copyright 2014-Present Couchbase, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

declare(strict_types=1);

namespace Couchbase\Management;

class AnalyticsDataset
{
private string $name;
private string $dataverseName;
private string $linkName;
private string $bucketName;

/**
* @internal
* @since 4.2.4
*/
private function __construct(
string $name,
string $dataverseName,
string $linkName,
string $bucketName
)
{
$this->name = $name;
$this->dataverseName = $dataverseName;
$this->linkName = $linkName;
$this->bucketName = $bucketName;
}

/**
* Static helper to keep code more readable.
*
* @param string $name
* @param string $dataverseName
* @param string $linkName
* @param string $bucketName
*
* @return AnalyticsDataset
* @since 4.2.4
*/
public static function build(
string $name,
string $dataverseName,
string $linkName,
string $bucketName
)
{
return new AnalyticsDataset($name, $dataverseName, $linkName, $bucketName);
}

/**
* Gets the name of the analytics dataset (or collection)
*
* @return string
* @since 4.2.4
*/
public function name(): string
{
return $this->name;
}

/**
* Gets the name of the dataverse in which this dataset is stored.
*
* @return string
* @since 4.2.4
*/
public function dataverseName(): string
{
return $this->dataverseName;
}

/**
* Gets the name of the link that is associated with this dataset.
*
* @return string
* @since 4.2.4
*/
public function linkName(): string
{
return $this->linkName;
}

/**
* Gets the name of the bucket that this dataset includes.
*
* @return string
* @since 4.2.4
*/
public function bucketName(): string
{
return $this->bucketName;
}

/**
* @internal
*/
public static function import(array $data): AnalyticsDataset
{
return AnalyticsDataset::build(
$data["name"] ?? "",
$data["dataverseName"] ?? "",
$data["linkName"] ?? "",
$data["bucketName"] ?? ""
);
}
}
100 changes: 100 additions & 0 deletions Couchbase/Management/AnalyticsIndex.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<?php

declare(strict_types=1);

namespace Couchbase\Management;

class AnalyticsIndex
{
private string $name;
private string $datasetName;
private string $dataverseName;
private bool $isPrimary;

/**
* @param string $name
* @param string $datasetName
* @param string $dataverseName
* @param bool $isPrimary
*/
public function __construct(string $name, string $datasetName, string $dataverseName, bool $isPrimary)
{
$this->name = $name;
$this->datasetName = $datasetName;
$this->dataverseName = $dataverseName;
$this->isPrimary = $isPrimary;
}

/**
* Static helper to keep code more readable
*
* @param string $name
* @param string $datasetName
* @param string $dataverseName
* @param bool $isPrimary
*
* @return AnalyticsIndex
* @since 4.2.4
*/
public static function build(string $name, string $datasetName, string $dataverseName, bool $isPrimary)
{
return new AnalyticsIndex($name, $datasetName, $dataverseName, $isPrimary);
}

/**
* Gets the name of this index
*
* @return string
* @since 4.2.4
*/
public function name(): string
{
return $this->name;
}

/**
* Gets the name of the analytics dataset in which this index exists
*
* @return string
* @since 4.2.4
*/
public function datasetName(): string
{
return $this->datasetName;
}

/**
* Gets the name of the dataverse in which this index exists.
*
* @return string
* @since 4.2.4
*/
public function dataverseName(): string
{
return $this->dataverseName;
}

/**
* Returns true if this index is a primary index.
*
* @return bool
* @since 4.2.4
*/
public function isPrimary(): bool
{
return $this->isPrimary;
}

/**
* @internal
*/
public static function import(array $data): AnalyticsIndex
{
return AnalyticsIndex::build(
$data["name"] ?? "",
$data["datasetName"] ?? "",
$data["dataverseName"] ?? "",
$data["isPrimary"] ?? false
);
}
}
Loading
Loading