Compare commits

..

No commits in common. "47bb7aacdf2430e86f2e546691a4c0e3c86fc99a" and "813823111228b0f85937d418ac51132a6349f634" have entirely different histories.

4 changed files with 82 additions and 158 deletions

View File

@ -1033,316 +1033,271 @@ brief\\_05|schema||user_brief05||UPDATE|G</Grants>
</collation> </collation>
<schema id="324" parent="1" name="brief_05"> <schema id="324" parent="1" name="brief_05">
<Current>1</Current> <Current>1</Current>
<LastIntrospectionLocalTimestamp>2024-04-29.11:31:14</LastIntrospectionLocalTimestamp> <LastIntrospectionLocalTimestamp>2024-04-29.10:08:31</LastIntrospectionLocalTimestamp>
<CollationName>latin1_swedish_ci</CollationName> <CollationName>latin1_swedish_ci</CollationName>
</schema> </schema>
<schema id="325" parent="1" name="information_schema"> <schema id="325" parent="1" name="information_schema">
<CollationName>utf8_general_ci</CollationName> <CollationName>utf8_general_ci</CollationName>
</schema> </schema>
<user id="326" parent="1" name="user_brief05"/> <user id="326" parent="1" name="user_brief05"/>
<routine id="327" parent="324" name="CheckVehicleAvailability"> <table id="327" parent="324" name="brands">
<Definer>user_brief05@%</Definer>
<RoutineKind>procedure</RoutineKind>
<SourceTextLength>91</SourceTextLength>
</routine>
<routine id="328" parent="324" name="IsVehicleAvailable">
<Definer>user_brief05@%</Definer>
<Deterministic>1</Deterministic>
<RoutineKind>function</RoutineKind>
<SourceTextLength>111</SourceTextLength>
</routine>
<table id="329" parent="324" name="brands">
<Engine>InnoDB</Engine> <Engine>InnoDB</Engine>
<CollationName>latin1_swedish_ci</CollationName> <CollationName>latin1_swedish_ci</CollationName>
</table> </table>
<table id="330" parent="324" name="categories"> <table id="328" parent="324" name="categories">
<Engine>InnoDB</Engine> <Engine>InnoDB</Engine>
<CollationName>latin1_swedish_ci</CollationName> <CollationName>latin1_swedish_ci</CollationName>
</table> </table>
<table id="331" parent="324" name="models"> <table id="329" parent="324" name="models">
<Engine>InnoDB</Engine> <Engine>InnoDB</Engine>
<CollationName>latin1_swedish_ci</CollationName> <CollationName>latin1_swedish_ci</CollationName>
</table> </table>
<table id="332" parent="324" name="rent"> <table id="330" parent="324" name="rent">
<Engine>InnoDB</Engine> <Engine>InnoDB</Engine>
<CollationName>latin1_swedish_ci</CollationName> <CollationName>latin1_swedish_ci</CollationName>
</table> </table>
<table id="333" parent="324" name="users"> <table id="331" parent="324" name="users">
<Engine>InnoDB</Engine> <Engine>InnoDB</Engine>
<CollationName>latin1_swedish_ci</CollationName> <CollationName>latin1_swedish_ci</CollationName>
</table> </table>
<table id="334" parent="324" name="vehicles"> <table id="332" parent="324" name="vehicles">
<Engine>InnoDB</Engine> <Engine>InnoDB</Engine>
<CollationName>latin1_swedish_ci</CollationName> <CollationName>latin1_swedish_ci</CollationName>
</table> </table>
<argument id="335" parent="327" name="vehicleId"> <column id="333" parent="327" name="id">
<DasType>varchar(36)|0s</DasType>
<Position>1</Position>
</argument>
<argument id="336" parent="328">
<ArgumentDirection>R</ArgumentDirection>
<DasType>tinyint(1)|0s</DasType>
</argument>
<argument id="337" parent="328" name="veh_id">
<DasType>varchar(36)|0s</DasType>
<Position>1</Position>
</argument>
<column id="338" parent="329" name="id">
<DasType>varchar(36)|0s</DasType> <DasType>varchar(36)|0s</DasType>
<NotNull>1</NotNull> <NotNull>1</NotNull>
<Position>1</Position> <Position>1</Position>
</column> </column>
<column id="339" parent="329" name="slug_name"> <column id="334" parent="327" name="slug_name">
<DasType>varchar(32)|0s</DasType> <DasType>varchar(32)|0s</DasType>
<Position>2</Position> <Position>2</Position>
</column> </column>
<column id="340" parent="329" name="display_name"> <column id="335" parent="327" name="display_name">
<DasType>varchar(32)|0s</DasType> <DasType>varchar(32)|0s</DasType>
<Position>3</Position> <Position>3</Position>
</column> </column>
<column id="341" parent="329" name="image_blob"> <column id="336" parent="327" name="image_blob">
<DasType>blob|0s</DasType> <DasType>blob|0s</DasType>
<Position>4</Position> <Position>4</Position>
</column> </column>
<index id="342" parent="329" name="PRIMARY"> <index id="337" parent="327" name="PRIMARY">
<ColNames>id</ColNames> <ColNames>id</ColNames>
<Type>btree</Type> <Type>btree</Type>
<Unique>1</Unique> <Unique>1</Unique>
</index> </index>
<index id="343" parent="329" name="slug_name"> <index id="338" parent="327" name="slug_name">
<ColNames>slug_name</ColNames> <ColNames>slug_name</ColNames>
<Type>btree</Type> <Type>btree</Type>
<Unique>1</Unique> <Unique>1</Unique>
</index> </index>
<key id="344" parent="329" name="PRIMARY"> <key id="339" parent="327" name="PRIMARY">
<NameSurrogate>1</NameSurrogate> <NameSurrogate>1</NameSurrogate>
<Primary>1</Primary> <Primary>1</Primary>
<UnderlyingIndexName>PRIMARY</UnderlyingIndexName> <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
</key> </key>
<key id="345" parent="329" name="slug_name"> <key id="340" parent="327" name="slug_name">
<UnderlyingIndexName>slug_name</UnderlyingIndexName> <UnderlyingIndexName>slug_name</UnderlyingIndexName>
</key> </key>
<column id="346" parent="330" name="id"> <column id="341" parent="328" name="id">
<DasType>varchar(36)|0s</DasType> <DasType>varchar(36)|0s</DasType>
<NotNull>1</NotNull> <NotNull>1</NotNull>
<Position>1</Position> <Position>1</Position>
</column> </column>
<column id="347" parent="330" name="slug_name"> <column id="342" parent="328" name="slug_name">
<DasType>varchar(36)|0s</DasType> <DasType>varchar(36)|0s</DasType>
<Position>2</Position> <Position>2</Position>
</column> </column>
<column id="348" parent="330" name="display_name"> <column id="343" parent="328" name="display_name">
<DasType>varchar(32)|0s</DasType> <DasType>varchar(32)|0s</DasType>
<Position>3</Position> <Position>3</Position>
</column> </column>
<index id="349" parent="330" name="PRIMARY"> <index id="344" parent="328" name="PRIMARY">
<ColNames>id</ColNames> <ColNames>id</ColNames>
<Type>btree</Type> <Type>btree</Type>
<Unique>1</Unique> <Unique>1</Unique>
</index> </index>
<key id="350" parent="330" name="PRIMARY"> <key id="345" parent="328" name="PRIMARY">
<NameSurrogate>1</NameSurrogate> <NameSurrogate>1</NameSurrogate>
<Primary>1</Primary> <Primary>1</Primary>
<UnderlyingIndexName>PRIMARY</UnderlyingIndexName> <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
</key> </key>
<column id="351" parent="331" name="id"> <column id="346" parent="329" name="id">
<DasType>varchar(36)|0s</DasType> <DasType>varchar(36)|0s</DasType>
<NotNull>1</NotNull> <NotNull>1</NotNull>
<Position>1</Position> <Position>1</Position>
</column> </column>
<column id="352" parent="331" name="slug_name"> <column id="347" parent="329" name="slug_name">
<DasType>varchar(32)|0s</DasType> <DasType>varchar(32)|0s</DasType>
<Position>2</Position> <Position>2</Position>
</column> </column>
<column id="353" parent="331" name="display_name"> <column id="348" parent="329" name="display_name">
<DasType>varchar(32)|0s</DasType> <DasType>varchar(32)|0s</DasType>
<Position>3</Position> <Position>3</Position>
</column> </column>
<column id="354" parent="331" name="brand_id"> <column id="349" parent="329" name="brand_id">
<DasType>varchar(36)|0s</DasType> <DasType>varchar(36)|0s</DasType>
<Position>4</Position> <Position>4</Position>
</column> </column>
<column id="355" parent="331" name="category_id"> <column id="350" parent="329" name="category_id">
<DasType>varchar(36)|0s</DasType> <DasType>varchar(36)|0s</DasType>
<Position>5</Position> <Position>5</Position>
</column> </column>
<column id="356" parent="331" name="image_blob"> <column id="351" parent="329" name="image_blob">
<DasType>blob|0s</DasType> <DasType>blob|0s</DasType>
<Position>6</Position> <Position>6</Position>
</column> </column>
<column id="357" parent="331" name="is_trending"> <column id="352" parent="329" name="is_trending">
<DasType>tinyint(1)|0s</DasType> <DasType>tinyint(1)|0s</DasType>
<Position>7</Position> <Position>7</Position>
</column> </column>
<column id="358" parent="331" name="base_price"> <column id="353" parent="329" name="base_price">
<DasType>float|0s</DasType> <DasType>float|0s</DasType>
<Position>8</Position> <Position>8</Position>
</column> </column>
<index id="359" parent="331" name="PRIMARY"> <index id="354" parent="329" name="PRIMARY">
<ColNames>id</ColNames> <ColNames>id</ColNames>
<Type>btree</Type> <Type>btree</Type>
<Unique>1</Unique> <Unique>1</Unique>
</index> </index>
<index id="360" parent="331" name="slug_name"> <index id="355" parent="329" name="slug_name">
<ColNames>slug_name</ColNames> <ColNames>slug_name</ColNames>
<Type>btree</Type> <Type>btree</Type>
<Unique>1</Unique> <Unique>1</Unique>
</index> </index>
<key id="361" parent="331" name="PRIMARY"> <key id="356" parent="329" name="PRIMARY">
<NameSurrogate>1</NameSurrogate> <NameSurrogate>1</NameSurrogate>
<Primary>1</Primary> <Primary>1</Primary>
<UnderlyingIndexName>PRIMARY</UnderlyingIndexName> <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
</key> </key>
<key id="362" parent="331" name="slug_name"> <key id="357" parent="329" name="slug_name">
<UnderlyingIndexName>slug_name</UnderlyingIndexName> <UnderlyingIndexName>slug_name</UnderlyingIndexName>
</key> </key>
<column id="363" parent="332" name="vehicle_id"> <column id="358" parent="330" name="vehicle_id">
<DasType>varchar(36)|0s</DasType> <DasType>varchar(36)|0s</DasType>
<Position>1</Position> <Position>1</Position>
</column> </column>
<column id="364" parent="332" name="user_id"> <column id="359" parent="330" name="user_id">
<DasType>varchar(36)|0s</DasType> <DasType>varchar(36)|0s</DasType>
<Position>2</Position> <Position>2</Position>
</column> </column>
<column id="365" parent="332" name="active"> <column id="360" parent="330" name="active">
<DasType>tinyint(1)|0s</DasType> <DasType>tinyint(1)|0s</DasType>
<Position>3</Position> <Position>3</Position>
</column> </column>
<column id="366" parent="332" name="iat"> <column id="361" parent="330" name="iat">
<DasType>date|0s</DasType> <DasType>date|0s</DasType>
<Position>4</Position> <Position>4</Position>
</column> </column>
<column id="367" parent="332" name="eat"> <column id="362" parent="330" name="eat">
<DasType>date|0s</DasType> <DasType>date|0s</DasType>
<Position>5</Position> <Position>5</Position>
</column> </column>
<column id="368" parent="332" name="need_survey"> <column id="363" parent="330" name="need_survey">
<DasType>tinyint(1)|0s</DasType> <DasType>tinyint(1)|0s</DasType>
<Position>6</Position> <Position>6</Position>
</column> </column>
<column id="369" parent="332" name="km_at_start"> <column id="364" parent="330" name="km_at_start">
<DasType>int(11)|0s</DasType> <DasType>int(11)|0s</DasType>
<Position>7</Position> <Position>7</Position>
</column> </column>
<column id="370" parent="333" name="id"> <column id="365" parent="331" name="id">
<DasType>varchar(36)|0s</DasType> <DasType>varchar(36)|0s</DasType>
<NotNull>1</NotNull> <NotNull>1</NotNull>
<Position>1</Position> <Position>1</Position>
</column> </column>
<column id="371" parent="333" name="username"> <column id="366" parent="331" name="username">
<DasType>varchar(12)|0s</DasType> <DasType>varchar(12)|0s</DasType>
<Position>2</Position> <Position>2</Position>
</column> </column>
<column id="372" parent="333" name="firstname"> <column id="367" parent="331" name="firstname">
<DasType>varchar(16)|0s</DasType> <DasType>varchar(16)|0s</DasType>
<Position>3</Position> <Position>3</Position>
</column> </column>
<column id="373" parent="333" name="lastname"> <column id="368" parent="331" name="lastname">
<DasType>varchar(16)|0s</DasType> <DasType>varchar(16)|0s</DasType>
<Position>4</Position> <Position>4</Position>
</column> </column>
<column id="374" parent="333" name="dob"> <column id="369" parent="331" name="dob">
<DasType>date|0s</DasType> <DasType>date|0s</DasType>
<Position>5</Position> <Position>5</Position>
</column> </column>
<column id="375" parent="333" name="email"> <column id="370" parent="331" name="email">
<DasType>varchar(32)|0s</DasType> <DasType>varchar(32)|0s</DasType>
<Position>6</Position> <Position>6</Position>
</column> </column>
<column id="376" parent="333" name="is_admin"> <column id="371" parent="331" name="is_admin">
<DasType>tinyint(1)|0s</DasType> <DasType>tinyint(1)|0s</DasType>
<DefaultExpression>0</DefaultExpression> <DefaultExpression>0</DefaultExpression>
<Position>7</Position> <Position>7</Position>
</column> </column>
<column id="377" parent="333" name="gdpr"> <column id="372" parent="331" name="gdpr">
<DasType>date|0s</DasType> <DasType>date|0s</DasType>
<Position>8</Position> <Position>8</Position>
</column> </column>
<column id="378" parent="333" name="hash"> <column id="373" parent="331" name="hash">
<DasType>varchar(128)|0s</DasType> <DasType>varchar(128)|0s</DasType>
<Position>9</Position> <Position>9</Position>
</column> </column>
<column id="379" parent="333" name="is_email_verified"> <column id="374" parent="331" name="is_email_verified">
<DasType>tinyint(1)|0s</DasType> <DasType>tinyint(1)|0s</DasType>
<DefaultExpression>0</DefaultExpression> <DefaultExpression>0</DefaultExpression>
<NotNull>1</NotNull> <NotNull>1</NotNull>
<Position>10</Position> <Position>10</Position>
</column> </column>
<index id="380" parent="333" name="PRIMARY"> <index id="375" parent="331" name="PRIMARY">
<ColNames>id</ColNames> <ColNames>id</ColNames>
<Type>btree</Type> <Type>btree</Type>
<Unique>1</Unique> <Unique>1</Unique>
</index> </index>
<index id="381" parent="333" name="users_pk"> <index id="376" parent="331" name="username">
<ColNames>id</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<index id="382" parent="333" name="users_pk_2">
<ColNames>id</ColNames>
<Type>btree</Type>
<Unique>1</Unique>
</index>
<index id="383" parent="333" name="username">
<ColNames>username</ColNames> <ColNames>username</ColNames>
<Type>btree</Type> <Type>btree</Type>
<Unique>1</Unique> <Unique>1</Unique>
</index> </index>
<index id="384" parent="333" name="email"> <index id="377" parent="331" name="email">
<ColNames>email</ColNames> <ColNames>email</ColNames>
<Type>btree</Type> <Type>btree</Type>
<Unique>1</Unique> <Unique>1</Unique>
</index> </index>
<key id="385" parent="333" name="PRIMARY"> <key id="378" parent="331" name="PRIMARY">
<NameSurrogate>1</NameSurrogate> <NameSurrogate>1</NameSurrogate>
<Primary>1</Primary> <Primary>1</Primary>
<UnderlyingIndexName>PRIMARY</UnderlyingIndexName> <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
</key> </key>
<key id="386" parent="333" name="users_pk"> <key id="379" parent="331" name="username">
<UnderlyingIndexName>users_pk</UnderlyingIndexName>
</key>
<key id="387" parent="333" name="users_pk_2">
<UnderlyingIndexName>users_pk_2</UnderlyingIndexName>
</key>
<key id="388" parent="333" name="username">
<UnderlyingIndexName>username</UnderlyingIndexName> <UnderlyingIndexName>username</UnderlyingIndexName>
</key> </key>
<key id="389" parent="333" name="email"> <key id="380" parent="331" name="email">
<UnderlyingIndexName>email</UnderlyingIndexName> <UnderlyingIndexName>email</UnderlyingIndexName>
</key> </key>
<column id="390" parent="334" name="id"> <column id="381" parent="332" name="id">
<DasType>varchar(36)|0s</DasType> <DasType>varchar(36)|0s</DasType>
<NotNull>1</NotNull> <NotNull>1</NotNull>
<Position>1</Position> <Position>1</Position>
</column> </column>
<column id="391" parent="334" name="plate_number"> <column id="382" parent="332" name="plate_number">
<DasType>varchar(8)|0s</DasType> <DasType>varchar(8)|0s</DasType>
<Position>2</Position> <Position>2</Position>
</column> </column>
<column id="392" parent="334" name="model_id"> <column id="383" parent="332" name="model_id">
<DasType>varchar(36)|0s</DasType> <DasType>varchar(36)|0s</DasType>
<Position>3</Position> <Position>3</Position>
</column> </column>
<column id="393" parent="334" name="odometer"> <column id="384" parent="332" name="odometer">
<DasType>int(11)|0s</DasType> <DasType>int(11)|0s</DasType>
<Position>4</Position> <Position>4</Position>
</column> </column>
<column id="394" parent="334" name="health_state"> <column id="385" parent="332" name="health_state">
<DasType>float|0s</DasType> <DasType>float|0s</DasType>
<Position>5</Position> <Position>5</Position>
</column> </column>
<column id="395" parent="334" name="isAvailable"> <index id="386" parent="332" name="PRIMARY">
<DasType>tinyint(1)|0s</DasType>
<DefaultExpression>1</DefaultExpression>
<NotNull>1</NotNull>
<Position>6</Position>
</column>
<index id="396" parent="334" name="PRIMARY">
<ColNames>id</ColNames> <ColNames>id</ColNames>
<Type>btree</Type> <Type>btree</Type>
<Unique>1</Unique> <Unique>1</Unique>
</index> </index>
<key id="397" parent="334" name="PRIMARY"> <key id="387" parent="332" name="PRIMARY">
<NameSurrogate>1</NameSurrogate> <NameSurrogate>1</NameSurrogate>
<Primary>1</Primary> <Primary>1</Primary>
<UnderlyingIndexName>PRIMARY</UnderlyingIndexName> <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>

1
.idea/sqldialects.xml generated
View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="SqlDialectMappings"> <component name="SqlDialectMappings">
<file url="file://$APPLICATION_CONFIG_DIR$/consoles/db/1f2800b5-8649-4a80-a9ec-b7b2a24623b4/console.sql" dialect="MariaDB" />
<file url="PROJECT" dialect="MariaDB" /> <file url="PROJECT" dialect="MariaDB" />
</component> </component>
</project> </project>

View File

@ -3,10 +3,10 @@ import type {IDbModel} from "@interfaces/database/IDbModel";
import type {IDbUser} from "@interfaces/database/IDbUser"; import type {IDbUser} from "@interfaces/database/IDbUser";
import type {IDbBrand} from "@interfaces/database/IDbBrand"; import type {IDbBrand} from "@interfaces/database/IDbBrand";
import type {IDbStatusResult} from "@interfaces/database/IDbStatusResult"; import type {IDbStatusResult} from "@interfaces/database/IDbStatusResult";
import type {IDbVehicle} from "@interfaces/database/IDbVehicle";
import mysql, {type Connection, type ConnectionOptions} from 'mysql2'; import mysql, {type Connection, type ConnectionOptions} from 'mysql2';
import {Logger} from "tslog"; import {Logger} from "tslog";
import process from "node:process"; import process from "node:process";
import {IDbVehicle} from "@interfaces/database/IDbVehicle";
const access: ConnectionOptions = { const access: ConnectionOptions = {
@ -464,7 +464,6 @@ const MySqlService = {
} }
}); });
}, },
/** /**
* Retrieves a model by its ID from the database. * Retrieves a model by its ID from the database.
* *
@ -647,63 +646,34 @@ const MySqlService = {
}) })
}, },
/** //TODO get by slug
* Retrieves a vehicle from the database by its ID. getBySlug(handler: MysqlHandler, data: IDbVehicle) {
*
* @param {MysqlHandler} handler - The instance of the MySQL handler.
* @param {string} vehicleId - The ID of the vehicle to retrieve.
* @returns {Promise<IDbVehicle>} - A promise that resolves to the retrieved vehicle.
* @throws {Error} - If an error occurs while retrieving the vehicle.
*/
getById(handler: MysqlHandler, vehicleId: string): Promise<IDbVehicle> {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!vehicleId) return reject('Id is undefined');
if (vehicleId.length !== 36) return reject('Id invalid'); })
const _sql = "SELECT * FROM `vehicles` WHERE `id` = ?";
const _values = [vehicleId];
try {
resolve(handler.execute(_sql, _values) as unknown as IDbVehicle);
} catch (err: unknown) {
reject(err as Error);
}
});
}, },
/** //TODO get all
* Retrieves all vehicles from the database. getAll(handler: MysqlHandler, data: IDbVehicle) {
*
* @param {MysqlHandler} handler - The MySQL handler for executing queries.
* @return {Promise<Array<IDbVehicle>>} A promise that resolves with an array of database vehicles.
* @throws {Error} If an error occurs during the database query.
*/
getAll(handler: MysqlHandler): Promise<Array<IDbVehicle>> {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const _sql = "SELECT * FROM `models`";
try { })
resolve(handler.query(_sql) as unknown as Array<IDbVehicle>);
} catch (err: unknown) {
reject(err as Error);
}
});
}, },
/** //TODO get available
* Retrieves the available vehicles from the database. getAvailable(handler: MysqlHandler, data: IDbVehicle) {
*
* @param {MysqlHandler} handler - The MySQL handler object used to execute the query.
* @returns {Promise<Array<IDbVehicle>>} A promise that resolves to an array of available vehicles.
* @throws {Error} If an error occurs while executing the query.
*/
getAvailable(handler: MysqlHandler): Promise<Array<IDbVehicle>> {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const _sql = "SELECT * FROM `vehicles` WERE `isAvailable` = 1";
try { })
resolve(handler.query(_sql) as unknown as Array<IDbVehicle>); },
} catch (err: unknown) {
reject(err as Error); //TODO get out of due date
} getDue(handler: MysqlHandler, data: IDbVehicle) {
return new Promise((resolve, reject) => {
}) })
} }
}, },
Category: { Category: {
/** /**