packages/sql-parser/src/Sqlite/SqliteVersion.php

1<?php
2
3declare(strict_types=1);
4
5namespace SqlParser\Sqlite;
6
7use RuntimeException;
8use SqlParser\Resource\SqlVersion;
9use SqlParser\Resource\VersionRegistry;
10
11/**
12 * A supported SQLite release.
13 *
14 * @visibility root
15 */
16final class SqliteVersion
17{
18    /**
19     * The dialect name the resource record uses.
20     */
21    public const DIALECT = 'sqlite';
22
23    /**
24     * @param SqlVersion $release The release and its resources
25     */
26    public function __construct(public readonly SqlVersion $release)
27    {
28    }
29
30    /**
31     * Resolves a release tag, the newest shipped release when none is given.
32     *
33     * @param string|null $version Tag such as `sqlite-3.47.2`, or null for the default
34     * @param VersionRegistry $registry Record of shipped releases
35     *
36     * @return self The release
37     *
38     * @throws RuntimeException When the release is not shipped
39     */
40    public static function resolve(?string $version = null, VersionRegistry $registry = new VersionRegistry()): self
41    {
42        return new self($registry->resolve(self::DIALECT, $version));
43    }
44
45    /**
46     * Answers the release tag.
47     *
48     * @return string Tag such as `sqlite-3.47.2`
49     */
50    public function name(): string
51    {
52        return $this->release->name;
53    }
54}
55