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