Skip to content

Commit 6655f21

Browse files
chore: merge pr #90
Version 1
2 parents a9b229f + ae321a8 commit 6655f21

File tree

141 files changed

+3955
-198
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+3955
-198
lines changed

.gitignore

+7
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,14 @@
1717
# Package managers
1818
node_modules
1919
*.iml
20+
21+
# Flutter/Dart/Pub related
2022
pubspec.lock
23+
.dart_tool/
24+
.flutter-plugins
25+
.flutter-plugins-dependencies
26+
.packages
27+
build/
2128

2229
# Dev
2330
.env

.vscode/settings.json

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
{
2+
"cSpell.words": ["asuka", "itourism", "starbase"],
23
"dart.runPubGetOnPubspecChanges": false,
4+
"files.exclude": {
5+
"**/*.g.dart": true
6+
},
37
"material-icon-theme.activeIconPack": "nest",
48
"material-icon-theme.files.associations": {
59
"justfile": "makefile",
@@ -10,8 +14,9 @@
1014
"tsconfig/next.json": "tsconfig"
1115
},
1216
"material-icon-theme.folders.associations": {
13-
"tsconfig": "typescript",
17+
"attractions": "cart",
18+
"cities": "home",
1419
"nestjs": "api",
15-
"attractions": "cart"
20+
"tsconfig": "typescript"
1621
}
1722
}

apps/api/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@itourism/api",
3-
"version": "0.0.1",
3+
"version": "1.0.0",
44
"private": true,
55
"scripts": {
66
"bootstrap": "just bootstrap",

apps/api/src/models/cities.model.ts

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/* eslint-disable no-use-before-define */
2+
import { BaseModel } from '@itourism/nestjs';
3+
4+
export class CitiesModel extends BaseModel<CitiesModel> {
5+
id: string;
6+
7+
name: string;
8+
9+
latitude: number;
10+
11+
longitude: number;
12+
13+
createdAt: Date;
14+
15+
updatedAt: Date;
16+
}

apps/api/src/modules/app/app.interceptors.ts

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { ErrorsInterceptor } from '@itourism/nestjs';
12
import { ClassSerializerInterceptor } from '@nestjs/common';
23
import { Reflector } from '@nestjs/core';
34
import { NestExpressApplication } from '@nestjs/platform-express';
@@ -6,4 +7,6 @@ export function applyGlobalInterceptors(app: NestExpressApplication) {
67
const appReflector = app.get<Reflector>(Reflector);
78

89
app.useGlobalInterceptors(new ClassSerializerInterceptor(appReflector));
10+
11+
app.useGlobalInterceptors(new ErrorsInterceptor());
912
}

apps/api/src/modules/app/app.module.ts

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { AppCacheModule } from 'infra/cache/cache.module';
55
import { AppConfigModule } from 'infra/config/config.module';
66
import { AppThrottlerModule } from 'infra/throttler/throttler.module';
77
import { AttractionsModule } from 'modules/attractions/attractions.module';
8+
import { CitiesModule } from 'modules/cities/cities.module';
89
import { EventsModule } from 'modules/events/events.module';
910

1011
@Module({
@@ -14,6 +15,7 @@ import { EventsModule } from 'modules/events/events.module';
1415
AppThrottlerModule,
1516
EventsModule,
1617
AttractionsModule,
18+
CitiesModule,
1719
],
1820
providers: [
1921
{

apps/api/src/modules/attractions/attractions.controller.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ export class AttractionsController {
3838
);
3939
}
4040

41-
@Get()
41+
@Get(':id')
4242
async findById(@Param(':id') id: string): Promise<AttractionModel> {
43-
return this.attractionsService.findOneById(id);
43+
return this.attractionsService.findById(id);
4444
}
4545
}

apps/api/src/modules/attractions/attractions.service.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
import { PrismaPaginator, serializeCollection } from '@itourism/nestjs';
1+
import {
2+
NotFoundError,
3+
PrismaPaginator,
4+
serializeCollection,
5+
} from '@itourism/nestjs';
26
import { Injectable } from '@nestjs/common';
3-
import { NotFoundError } from 'errors/not-found.error';
47
import { PrismaService } from 'infra/prisma/prisma.service';
5-
import { AttractionModel, AttractionType } from 'models/attraction.model';
8+
import { AttractionModel } from 'models/attraction.model';
9+
import type { AttractionType } from 'models/attraction.model';
610

711
@Injectable()
812
export class AttractionsService {
@@ -32,7 +36,7 @@ export class AttractionsService {
3236
return serializeCollection(attractions, AttractionModel);
3337
}
3438

35-
async findOneById(id: string): Promise<AttractionModel> {
39+
async findById(id: string): Promise<AttractionModel> {
3640
const attraction = await this.prismaService.attraction.findUnique({
3741
where: { id },
3842
select: {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Paginator, UsePaginator } from '@itourism/nestjs';
2+
import {
3+
CacheInterceptor,
4+
Controller,
5+
Get,
6+
UseInterceptors,
7+
} from '@nestjs/common';
8+
import { CitiesModel } from 'models/cities.model';
9+
10+
import { CitiesService } from './cities.service';
11+
12+
@Controller('cities')
13+
@UseInterceptors(CacheInterceptor)
14+
export class CitiesController {
15+
constructor(private readonly citiesService: CitiesService) {}
16+
17+
@Get()
18+
async findAll(@UsePaginator() paginator?: Paginator): Promise<CitiesModel[]> {
19+
return this.citiesService.findAll(paginator?.prisma);
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Module } from '@nestjs/common';
2+
import { PrismaModule } from 'infra/prisma/prisma.module';
3+
4+
import { CitiesController } from './cities.controller';
5+
import { CitiesService } from './cities.service';
6+
7+
@Module({
8+
imports: [PrismaModule],
9+
providers: [CitiesService],
10+
controllers: [CitiesController],
11+
})
12+
export class CitiesModule {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { PrismaPaginator, serializeCollection } from '@itourism/nestjs';
2+
import { Injectable } from '@nestjs/common';
3+
import { PrismaService } from 'infra/prisma/prisma.service';
4+
import { CitiesModel } from 'models/cities.model';
5+
6+
@Injectable()
7+
export class CitiesService {
8+
constructor(private readonly prismaService: PrismaService) {}
9+
10+
async findAll(paginator?: PrismaPaginator): Promise<CitiesModel[]> {
11+
const cities = await this.prismaService.city.findMany({
12+
skip: paginator?.skip,
13+
take: paginator?.take,
14+
});
15+
16+
return serializeCollection(cities, CitiesModel);
17+
}
18+
}

apps/mobile/android/app/build.gradle

+5-2
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,14 @@ if (flutterVersionName == null) {
2222
}
2323

2424
apply plugin: 'com.android.application'
25+
// START: FlutterFire Configuration
26+
apply plugin: 'com.google.gms.google-services'
27+
// END: FlutterFire Configuration
2528
apply plugin: 'kotlin-android'
2629
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
2730

2831
android {
29-
compileSdkVersion flutter.compileSdkVersion
32+
compileSdkVersion 33
3033
ndkVersion flutter.ndkVersion
3134

3235
compileOptions {
@@ -47,7 +50,7 @@ android {
4750
applicationId "app.itourism.itourism_mobile"
4851
// You can update the following values to match your application needs.
4952
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
50-
minSdkVersion flutter.minSdkVersion
53+
minSdkVersion 20
5154
targetSdkVersion flutter.targetSdkVersion
5255
versionCode flutterVersionCode.toInteger()
5356
versionName flutterVersionName
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"project_info": {
3+
"project_number": "788455666315",
4+
"project_id": "cod3rocket-itourism",
5+
"storage_bucket": "cod3rocket-itourism.appspot.com"
6+
},
7+
"client": [
8+
{
9+
"client_info": {
10+
"mobilesdk_app_id": "1:788455666315:android:0b84bb8af2bf87664cda8e",
11+
"android_client_info": {
12+
"package_name": "app.itourism.itourism_mobile"
13+
}
14+
},
15+
"oauth_client": [
16+
{
17+
"client_id": "788455666315-nblo98bf6pn27dfa7pi6g4hk65vrl0pn.apps.googleusercontent.com",
18+
"client_type": 3
19+
}
20+
],
21+
"api_key": [
22+
{
23+
"current_key": "AIzaSyAXLNSDmHFslmviz6Jqmg2ofLL27NO9WsM"
24+
}
25+
],
26+
"services": {
27+
"appinvite_service": {
28+
"other_platform_oauth_client": [
29+
{
30+
"client_id": "788455666315-nblo98bf6pn27dfa7pi6g4hk65vrl0pn.apps.googleusercontent.com",
31+
"client_type": 3
32+
}
33+
]
34+
}
35+
}
36+
}
37+
],
38+
"configuration_version": "1"
39+
}
95.4 KB
Loading

apps/mobile/android/app/src/main/AndroidManifest.xml

+20-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,28 @@
11
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
22
package="app.itourism.itourism_mobile">
3+
<queries>
4+
<intent>
5+
<action android:name="android.intent.action.VIEW" />
6+
<data android:scheme="tel" />
7+
</intent>
8+
<intent>
9+
<action android:name="android.intent.action.VIEW" />
10+
<data android:scheme="https" />
11+
</intent>
12+
<intent>
13+
<action android:name="android.intent.action.view" />
14+
<data android:scheme="comgooglemaps" />
15+
</intent>
16+
</queries>
317
<application
4-
android:label="itourism_mobile"
18+
android:label="iTourism"
519
android:name="${applicationName}"
620
android:icon="@mipmap/ic_launcher">
21+
22+
<meta-data
23+
android:name="com.google.android.geo.API_KEY"
24+
android:value="AIzaSyBEFMk4H0rNXx0AlX7mqNkyBxpO0Zi_D8k" />
25+
726
<activity
827
android:name=".MainActivity"
928
android:exported="true"
Loading
Loading
Loading
Loading
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
3+
<background android:drawable="@mipmap/ic_launcher_adaptive_back"/>
4+
<foreground android:drawable="@mipmap/ic_launcher_adaptive_fore"/>
5+
</adaptive-icon>
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading

apps/mobile/android/build.gradle

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ buildscript {
77

88
dependencies {
99
classpath 'com.android.tools.build:gradle:7.1.2'
10+
// START: FlutterFire Configuration
11+
classpath 'com.google.gms:google-services:4.3.10'
12+
// END: FlutterFire Configuration
1013
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
1114
}
1215
}

apps/mobile/assets/images/icon.png

12.3 KB
Loading
9.63 KB
Loading

0 commit comments

Comments
 (0)