├── .husky ├── pre-commit └── prepare-commit-msg ├── .prettierignore ├── .npmrc ├── tsconfig.json ├── stylelint.config.js ├── .prettierrc ├── app ├── layouts │ └── default.vue ├── stores │ └── useCounter.ts ├── plugins │ └── vuetify.ts └── pages │ └── index.vue ├── .editorconfig ├── eslint.config.js ├── .graphqlconfig ├── nuxt.config.ts ├── README.md ├── package.json ├── .gitignore └── introspection.graphql /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | npx lint-staged 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | pnpm-lock.yaml 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | shamefully-hoist=true 2 | strict-peer-dependencies=false 3 | -------------------------------------------------------------------------------- /.husky/prepare-commit-msg: -------------------------------------------------------------------------------- 1 | exec < /dev/tty && node_modules/.bin/cz --hook || true 2 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // https://nuxt.com/docs/guide/concepts/typescript 3 | "extends": "./.nuxt/tsconfig.json" 4 | } 5 | -------------------------------------------------------------------------------- /stylelint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['stylelint-config-standard-scss', 'stylelint-config-standard-vue/scss'], 3 | rules: {}, 4 | } 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "trailingComma": "all", 5 | "printWidth": 110, 6 | "endOfLine": "auto", 7 | "htmlWhitespaceSensitivity": "ignore", 8 | "useTabs": true 9 | } 10 | -------------------------------------------------------------------------------- /app/layouts/default.vue: -------------------------------------------------------------------------------- 1 | 8 | 13 | -------------------------------------------------------------------------------- /app/stores/useCounter.ts: -------------------------------------------------------------------------------- 1 | export const useCounter = defineStore('counter', { 2 | state: () => ({ count: 0 }), 3 | getters: { 4 | doubleCount: (state) => state.count * 2, 5 | }, 6 | actions: { 7 | increment() { 8 | this.count++ 9 | }, 10 | }, 11 | }) 12 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = tab 8 | indent_size = 4 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.{yml,yaml}] 15 | indent_size = 2 16 | 17 | [docker-compose.yml] 18 | indent_size = 4 19 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | import antfu from '@antfu/eslint-config' 3 | import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended' 4 | export default antfu( 5 | { 6 | stylistic: false, 7 | rules: { 8 | 'no-console': 'off', 9 | 'ts/consistent-type-definitions': 'off', 10 | 'vue/block-order': [ 11 | 'error', 12 | { 13 | order: [['template', 'script'], 'style'], 14 | }, 15 | ], 16 | }, 17 | }, 18 | eslintPluginPrettierRecommended, 19 | { ignores: ['pnpm-lock.yaml', 'client/types/codegen/*.ts'] }, 20 | ) 21 | -------------------------------------------------------------------------------- /.graphqlconfig: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "spaceX": { 4 | "schemaPath": "introspection.graphql", 5 | "extensions": { 6 | "endpoints": { 7 | "Default GraphQL Endpoint": { 8 | "url": "https://spacex-production.up.railway.app/", 9 | "headers": { 10 | "user-agent": "JS GraphQL" 11 | }, 12 | "introspect": true 13 | } 14 | } 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/plugins/vuetify.ts: -------------------------------------------------------------------------------- 1 | import { createVuetify } from 'vuetify' 2 | import * as labs from 'vuetify/labs/components' 3 | import 'vuetify/styles' 4 | // Use this if you want only icons used by Vuetify components internally should be imported 5 | // import { aliases, mdi } from 'vuetify/iconsets/mdi-svg' 6 | import '@mdi/font/css/materialdesignicons.css' // Ensure you are using css-loader 7 | export default defineNuxtPlugin((nuxtApp) => { 8 | const vuetify = createVuetify({ 9 | components: { ...labs }, 10 | // Refer to https://vuetifyjs.com/en/features/icon-fonts/ 11 | // icons: { defaultSet: 'mdi', aliases, sets: { mdi } }, 12 | ssr: true, 13 | }) 14 | 15 | nuxtApp.vueApp.use(vuetify) 16 | }) 17 | -------------------------------------------------------------------------------- /nuxt.config.ts: -------------------------------------------------------------------------------- 1 | import vuetify from 'vite-plugin-vuetify' 2 | // https://nuxt.com/docs/api/configuration/nuxt-config 3 | 4 | export default defineNuxtConfig({ 5 | future: { compatibilityVersion: 4 }, 6 | build: { transpile: ['vuetify'] }, 7 | imports: { dirs: ['./stores'] }, 8 | 9 | apollo: { 10 | autoImports: true, 11 | proxyCookies: true, 12 | clients: { 13 | default: { httpEndpoint: 'https://spacex-production.up.railway.app/' }, 14 | }, 15 | }, 16 | 17 | vite: { 18 | optimizeDeps: { 19 | include: ['graphql-tag'], 20 | }, 21 | plugins: [vuetify()], 22 | }, 23 | 24 | modules: ['@nuxtjs/apollo', ['@pinia/nuxt', { autoImports: ['defineStore', 'acceptHMRUpdate'] }]], 25 | compatibilityDate: '2024-11-11', 26 | }) 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Nuxt 3 / Vuetify / Graphql / Pinia Starter 2 | 3 | This template incorporates the utilization of Nuxt3, Vuetify, GraphQL, and Pinia to create a robust foundation 4 | 5 | ### To learn more, you can check out: 6 | 7 | -[Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) 8 | 9 | -[Vuetify 3 documentation](https://next.vuetifyjs.com/) 10 | 11 | -[GraphQL documentation](https://graphql.org/) 12 | 13 | -[Pinia documentation](https://pinia.vuejs.org/) 14 | 15 | ## Linters 16 | 17 | The template has been pre-configured with state-of-the-art linters like eslint, stylelint, prettier, and commitizen to bolster code legibility and standardization 18 | 19 | ## Setup 20 | 21 | Make sure to install the dependencies: 22 | 23 | ```bash 24 | pnpm install 25 | ``` 26 | 27 | ## Development Server 28 | 29 | Start the development server on http://localhost:3000 30 | 31 | ```bash 32 | pnpm dev 33 | ``` 34 | 35 | Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information. 36 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "build": "nuxt build", 5 | "dev": "nuxt dev", 6 | "generate": "nuxt generate", 7 | "preview": "nuxt preview", 8 | "postinstall": "nuxt prepare", 9 | "lint:js": "eslint --ext .ts,.js,.vue --ignore-path .gitignore .", 10 | "lint:style": "stylelint **/*.{vue,css,scss} --ignore-path .gitignore", 11 | "lint": "npm run lint:js && npm run lint:style", 12 | "lintfix": "eslint --fix --ext .js,.jsx,.ts,.tsx,.vue --ignore-path .gitignore . && stylelint --fix **/*.{vue,css,scss} --ignore-path .gitignore" 13 | }, 14 | "lint-staged": { 15 | "**/*": "prettier --write --ignore-unknown --ignore-path .prettierignore", 16 | "*.{js,cjs,mjs,ts,jsx,tsx,vue}": "eslint --fix", 17 | "*.{css,scss,vue}": "stylelint --fix --ignore-path .gitignore" 18 | }, 19 | "config": { 20 | "commitizen": { 21 | "path": "./node_modules/cz-conventional-changelog" 22 | } 23 | }, 24 | "devDependencies": { 25 | "@antfu/eslint-config": "^3.8.0", 26 | "@nuxtjs/apollo": "^5.0.0-alpha.9", 27 | "cz-conventional-changelog": "^3.3.0", 28 | "eslint": "^9.14.0", 29 | "eslint-config-prettier": "^9.0.0", 30 | "eslint-plugin-prettier": "^5.0.1", 31 | "husky": "^9.1.6", 32 | "lint-staged": "^15.2.10", 33 | "nuxt": "^3.14.159", 34 | "postcss-html": "^1.7.0", 35 | "prettier": "^3.3.3", 36 | "stylelint": "^16.10.0", 37 | "stylelint-config-standard-scss": "^13.1.0", 38 | "stylelint-config-standard-vue": "^1.0.0", 39 | "vite-plugin-vuetify": "^2.0.4" 40 | }, 41 | "dependencies": { 42 | "@mdi/font": "^7.2.96", 43 | "@pinia/nuxt": "^0.5.1", 44 | "sass": "^1.68.0", 45 | "vuetify": "^3.3.23" 46 | }, 47 | "version": "3.0.0" 48 | } 49 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Laravel files 2 | /storage/*.key 3 | /storage/app/public 4 | /storage/debugbar 5 | .phpunit.result.cache 6 | Homestead.json 7 | Homestead.yaml 8 | 9 | # Nuxt Files 10 | /public/dist 11 | .nitro 12 | .output 13 | 14 | # Package Manager logs 15 | npm-debug.log* 16 | yarn-debug.log* 17 | yarn-error.log* 18 | 19 | # IDE helpers 20 | .phpstorm.meta.php 21 | _ide_helper.php 22 | _lighthouse_ide_helper.php 23 | 24 | # Unique secure certificates for laravel passport 25 | .rnd 26 | 27 | # Php cs fixer cache 28 | .php-cs-fixer.cache 29 | 30 | # Log files 31 | **/logs 32 | *.log* 33 | 34 | # Runtime data 35 | pids 36 | *.pid 37 | *.seed 38 | *.pid.lock 39 | 40 | # Directory for instrumented libs generated by jscoverage/JSCover 41 | lib-cov 42 | 43 | # Coverage directory used by tools like istanbul 44 | coverage 45 | 46 | # nyc test coverage 47 | .nyc_output 48 | 49 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 50 | .grunt 51 | 52 | # Bower dependency directory (https://bower.io/) 53 | bower_components 54 | 55 | # node-waf configuration 56 | .lock-wscript 57 | 58 | # Compiled binary addons (https://nodejs.org/api/addons.html) 59 | build/Release 60 | 61 | # Dependency directories 62 | **/node_modules 63 | **/vendor 64 | jspm_packages/ 65 | 66 | # TypeScript v1 declaration files 67 | typings/ 68 | 69 | # Optional npm cache directory 70 | .npm 71 | 72 | # Optional eslint cache 73 | .eslintcache 74 | 75 | # Optional REPL history 76 | .node_repl_history 77 | 78 | # Output of 'npm pack' 79 | *.tgz 80 | 81 | # Yarn Integrity file 82 | .yarn-integrity 83 | 84 | # dotenv environment variables file 85 | .env 86 | .env.backup 87 | 88 | # parcel-bundler cache (https://parceljs.org/) 89 | .cache 90 | 91 | # next.js build output 92 | .next 93 | 94 | # nuxt.js build output 95 | .nuxt 96 | _nuxt 97 | 98 | # Nuxt generate 99 | dist 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # Serverless directories 105 | .serverless 106 | 107 | # IDE / Editor 108 | .idea 109 | 110 | # Service worker 111 | sw.* 112 | 113 | # macOS 114 | .DS_Store 115 | 116 | # Vim swap files 117 | *.swp 118 | 119 | # Android Capacitor 120 | android 121 | 122 | # IOS Capacitor 123 | ios 124 | 125 | # Lighthouse 126 | programmatic-types.graphql 127 | 128 | # Vue styleguide 129 | public/styleguide 130 | 131 | # Auto imported components path 132 | .components.gen.js 133 | 134 | # Yarn Berry 135 | .pnp.* 136 | .yarn/* 137 | !.yarn/patches 138 | !.yarn/plugins 139 | !.yarn/releases 140 | !.yarn/sdks 141 | !.yarn/versions 142 | 143 | # VS code 144 | .vscode 145 | -------------------------------------------------------------------------------- /app/pages/index.vue: -------------------------------------------------------------------------------- 1 | 101 | 122 | -------------------------------------------------------------------------------- /introspection.graphql: -------------------------------------------------------------------------------- 1 | # This file was generated based on ".graphqlconfig". Do not edit manually. 2 | 3 | schema { 4 | query: Query 5 | mutation: Mutation 6 | subscription: Subscription 7 | } 8 | 9 | directive @contact( 10 | "Other relevant notes can be included here; supports markdown links" 11 | description: String 12 | "Contact title of the subgraph owner" 13 | name: String! 14 | "URL where the subgraph's owner can be reached" 15 | url: String 16 | ) on SCHEMA 17 | 18 | type Address { 19 | address: String 20 | city: String 21 | state: String 22 | } 23 | 24 | type Capsule { 25 | dragon: Dragon 26 | @deprecated(reason: "This is not available in the REST API after MongoDB has been deprecated") 27 | id: ID 28 | landings: Int 29 | missions: [CapsuleMission] 30 | original_launch: Date 31 | reuse_count: Int 32 | status: String 33 | type: String 34 | } 35 | 36 | type CapsuleMission { 37 | flight: Int 38 | name: String 39 | } 40 | 41 | type Core { 42 | asds_attempts: Int 43 | asds_landings: Int 44 | block: Int 45 | id: ID 46 | missions: [CapsuleMission] 47 | original_launch: Date 48 | reuse_count: Int 49 | rtls_attempts: Int 50 | rtls_landings: Int 51 | status: String 52 | water_landing: Boolean 53 | } 54 | 55 | type CoreMission { 56 | flight: Int 57 | name: String 58 | } 59 | 60 | type Distance { 61 | feet: Float 62 | meters: Float 63 | } 64 | 65 | type Dragon { 66 | active: Boolean 67 | crew_capacity: Int 68 | description: String 69 | diameter: Distance 70 | dry_mass_kg: Int 71 | dry_mass_lb: Int 72 | first_flight: String 73 | heat_shield: DragonHeatShield 74 | height_w_trunk: Distance 75 | id: ID 76 | launch_payload_mass: Mass 77 | launch_payload_vol: Volume 78 | name: String 79 | orbit_duration_yr: Int 80 | pressurized_capsule: DragonPressurizedCapsule 81 | return_payload_mass: Mass 82 | return_payload_vol: Volume 83 | sidewall_angle_deg: Float 84 | thrusters: [DragonThrust] 85 | trunk: DragonTrunk 86 | type: String 87 | wikipedia: String 88 | } 89 | 90 | type DragonHeatShield { 91 | dev_partner: String 92 | material: String 93 | size_meters: Float 94 | temp_degrees: Int 95 | } 96 | 97 | type DragonPressurizedCapsule { 98 | payload_volume: Volume 99 | } 100 | 101 | type DragonThrust { 102 | amount: Int 103 | fuel_1: String 104 | fuel_2: String 105 | pods: Int 106 | thrust: Force 107 | type: String 108 | } 109 | 110 | type DragonTrunk { 111 | cargo: DragonTrunkCargo 112 | trunk_volume: Volume 113 | } 114 | 115 | type DragonTrunkCargo { 116 | solar_array: Int 117 | unpressurized_cargo: Boolean 118 | } 119 | 120 | type Force { 121 | kN: Float 122 | lbf: Float 123 | } 124 | 125 | type HistoriesResult { 126 | data: [History] 127 | result: Result 128 | } 129 | 130 | type History { 131 | details: String 132 | event_date_unix: Date 133 | event_date_utc: Date 134 | flight: Launch 135 | id: ID 136 | links: Link 137 | title: String 138 | } 139 | 140 | type Info { 141 | ceo: String 142 | coo: String 143 | cto: String 144 | cto_propulsion: String 145 | employees: Int 146 | founded: Int 147 | founder: String 148 | headquarters: Address 149 | launch_sites: Int 150 | links: InfoLinks 151 | name: String 152 | summary: String 153 | test_sites: Int 154 | valuation: Float 155 | vehicles: Int 156 | } 157 | 158 | type InfoLinks { 159 | elon_twitter: String 160 | flickr: String 161 | twitter: String 162 | website: String 163 | } 164 | 165 | type Landpad { 166 | attempted_landings: String 167 | details: String 168 | full_name: String 169 | id: ID 170 | landing_type: String 171 | location: Location 172 | status: String 173 | successful_landings: String 174 | wikipedia: String 175 | } 176 | 177 | type Launch { 178 | details: String 179 | id: ID 180 | is_tentative: Boolean 181 | launch_date_local: Date 182 | launch_date_unix: Date 183 | launch_date_utc: Date 184 | launch_site: LaunchSite 185 | launch_success: Boolean 186 | launch_year: String 187 | links: LaunchLinks 188 | mission_id: [String] 189 | mission_name: String 190 | rocket: LaunchRocket 191 | ships: [Ship] 192 | static_fire_date_unix: Date 193 | static_fire_date_utc: Date 194 | telemetry: LaunchTelemetry 195 | tentative_max_precision: String 196 | upcoming: Boolean 197 | } 198 | 199 | type LaunchLinks { 200 | article_link: String 201 | flickr_images: [String] 202 | mission_patch: String 203 | mission_patch_small: String 204 | presskit: String 205 | reddit_campaign: String 206 | reddit_launch: String 207 | reddit_media: String 208 | reddit_recovery: String 209 | video_link: String 210 | wikipedia: String 211 | } 212 | 213 | type LaunchRocket { 214 | fairings: LaunchRocketFairings 215 | first_stage: LaunchRocketFirstStage 216 | rocket: Rocket 217 | rocket_name: String 218 | rocket_type: String 219 | second_stage: LaunchRocketSecondStage 220 | } 221 | 222 | type LaunchRocketFairings { 223 | recovered: Boolean 224 | recovery_attempt: Boolean 225 | reused: Boolean 226 | ship: String 227 | } 228 | 229 | type LaunchRocketFirstStage { 230 | cores: [LaunchRocketFirstStageCore] 231 | } 232 | 233 | type LaunchRocketFirstStageCore { 234 | block: Int 235 | core: Core 236 | flight: Int 237 | gridfins: Boolean 238 | land_success: Boolean 239 | landing_intent: Boolean 240 | landing_type: String 241 | landing_vehicle: String 242 | legs: Boolean 243 | reused: Boolean 244 | } 245 | 246 | type LaunchRocketSecondStage { 247 | block: Int 248 | payloads: [Payload] 249 | } 250 | 251 | type LaunchSite { 252 | site_id: String 253 | site_name: String 254 | site_name_long: String 255 | } 256 | 257 | type LaunchTelemetry { 258 | flight_club: String 259 | } 260 | 261 | type LaunchesPastResult { 262 | data: [Launch] 263 | result: Result 264 | } 265 | 266 | type Launchpad { 267 | attempted_launches: Int 268 | details: String 269 | id: ID 270 | location: Location 271 | name: String 272 | status: String 273 | successful_launches: Int 274 | vehicles_launched: [Rocket] 275 | wikipedia: String 276 | } 277 | 278 | type Link { 279 | article: String 280 | reddit: String 281 | wikipedia: String 282 | } 283 | 284 | type Location { 285 | latitude: Float 286 | longitude: Float 287 | name: String 288 | region: String 289 | } 290 | 291 | type Mass { 292 | kg: Int 293 | lb: Int 294 | } 295 | 296 | type Mission { 297 | description: String 298 | id: ID 299 | manufacturers: [String] 300 | name: String 301 | payloads: [Payload] 302 | twitter: String 303 | website: String 304 | wikipedia: String 305 | } 306 | 307 | type MissionResult { 308 | data: [Mission] 309 | result: Result 310 | } 311 | 312 | type Mutation { 313 | "delete data from the table: \"users\"" 314 | delete_users("filter the rows which have to be deleted" where: users_bool_exp!): users_mutation_response 315 | "insert data into the table: \"users\"" 316 | insert_users( 317 | "the rows to be inserted" 318 | objects: [users_insert_input!]! 319 | "on conflict condition" 320 | on_conflict: users_on_conflict 321 | ): users_mutation_response 322 | "update data of the table: \"users\"" 323 | update_users( 324 | "sets the columns of the filtered rows to the given values" 325 | _set: users_set_input 326 | "filter the rows which have to be updated" 327 | where: users_bool_exp! 328 | ): users_mutation_response 329 | } 330 | 331 | type Payload { 332 | customers: [String] 333 | id: ID 334 | manufacturer: String 335 | nationality: String 336 | norad_id: [Int] 337 | orbit: String 338 | orbit_params: PayloadOrbitParams 339 | payload_mass_kg: Float 340 | payload_mass_lbs: Float 341 | payload_type: String 342 | reused: Boolean 343 | } 344 | 345 | type PayloadOrbitParams { 346 | apoapsis_km: Float 347 | arg_of_pericenter: Float 348 | eccentricity: Float 349 | epoch: Date 350 | inclination_deg: Float 351 | lifespan_years: Float 352 | longitude: Float 353 | mean_anomaly: Float 354 | mean_motion: Float 355 | periapsis_km: Float 356 | period_min: Float 357 | raan: Float 358 | reference_system: String 359 | regime: String 360 | semi_major_axis_km: Float 361 | } 362 | 363 | type Query { 364 | capsule(id: ID!): Capsule 365 | capsules(find: CapsulesFind, limit: Int, offset: Int, order: String, sort: String): [Capsule] 366 | capsulesPast(find: CapsulesFind, limit: Int, offset: Int, order: String, sort: String): [Capsule] 367 | capsulesUpcoming(find: CapsulesFind, limit: Int, offset: Int, order: String, sort: String): [Capsule] 368 | company: Info 369 | core(id: ID!): Core 370 | cores(find: CoresFind, limit: Int, offset: Int, order: String, sort: String): [Core] 371 | coresPast(find: CoresFind, limit: Int, offset: Int, order: String, sort: String): [Core] 372 | coresUpcoming(find: CoresFind, limit: Int, offset: Int, order: String, sort: String): [Core] 373 | dragon(id: ID!): Dragon 374 | dragons(limit: Int, offset: Int): [Dragon] 375 | histories(find: HistoryFind, limit: Int, offset: Int, order: String, sort: String): [History] 376 | historiesResult(find: HistoryFind, limit: Int, offset: Int, order: String, sort: String): HistoriesResult 377 | history(id: ID!): History 378 | landpad(id: ID!): Landpad 379 | landpads(limit: Int, offset: Int): [Landpad] 380 | launch(id: ID!): Launch 381 | launchLatest(offset: Int): Launch 382 | launchNext(offset: Int): Launch 383 | launches(find: LaunchFind, limit: Int, offset: Int, order: String, sort: String): [Launch] 384 | launchesPast(find: LaunchFind, limit: Int, offset: Int, order: String, sort: String): [Launch] 385 | launchesPastResult( 386 | find: LaunchFind 387 | limit: Int 388 | offset: Int 389 | order: String 390 | sort: String 391 | ): LaunchesPastResult 392 | launchesUpcoming(find: LaunchFind, limit: Int, offset: Int, order: String, sort: String): [Launch] 393 | launchpad(id: ID!): Launchpad 394 | launchpads(limit: Int, offset: Int): [Launchpad] 395 | mission(id: ID!): Mission 396 | @deprecated(reason: "Mission is not available on REST API after MongoDB deprecation") 397 | missions(find: MissionsFind, limit: Int, offset: Int): [Mission] 398 | @deprecated(reason: "Mission is not available on REST API after MongoDB deprecation") 399 | missionsResult(find: MissionsFind, limit: Int, offset: Int): MissionResult 400 | @deprecated(reason: "Mission is not available on REST API after MongoDB deprecation") 401 | payload(id: ID!): Payload 402 | payloads(find: PayloadsFind, limit: Int, offset: Int, order: String, sort: String): [Payload] 403 | roadster: Roadster 404 | rocket(id: ID!): Rocket 405 | rockets(limit: Int, offset: Int): [Rocket] 406 | rocketsResult(limit: Int, offset: Int): RocketsResult 407 | ship(id: ID!): Ship 408 | ships(find: ShipsFind, limit: Int, offset: Int, order: String, sort: String): [Ship] 409 | shipsResult(find: ShipsFind, limit: Int, offset: Int, order: String, sort: String): ShipsResult 410 | "fetch data from the table: \"users\"" 411 | users( 412 | "distinct select on columns" 413 | distinct_on: [users_select_column!] 414 | "limit the nuber of rows returned" 415 | limit: Int 416 | "skip the first n rows. Use only with order_by" 417 | offset: Int 418 | "sort the rows by one or more columns" 419 | order_by: [users_order_by!] 420 | "filter the rows returned" 421 | where: users_bool_exp 422 | ): [users!]! 423 | "fetch aggregated fields from the table: \"users\"" 424 | users_aggregate( 425 | "distinct select on columns" 426 | distinct_on: [users_select_column!] 427 | "limit the nuber of rows returned" 428 | limit: Int 429 | "skip the first n rows. Use only with order_by" 430 | offset: Int 431 | "sort the rows by one or more columns" 432 | order_by: [users_order_by!] 433 | "filter the rows returned" 434 | where: users_bool_exp 435 | ): users_aggregate! 436 | "fetch data from the table: \"users\" using primary key columns" 437 | users_by_pk(id: uuid!): users 438 | } 439 | 440 | type Result { 441 | totalCount: Int 442 | } 443 | 444 | type Roadster { 445 | apoapsis_au: Float 446 | details: String 447 | earth_distance_km: Float 448 | earth_distance_mi: Float 449 | eccentricity: Float 450 | epoch_jd: Float 451 | inclination: Float 452 | launch_date_unix: Date 453 | launch_date_utc: Date 454 | launch_mass_kg: Int 455 | launch_mass_lbs: Int 456 | longitude: Float 457 | mars_distance_km: Float 458 | mars_distance_mi: Float 459 | name: String 460 | norad_id: Int 461 | orbit_type: Float 462 | periapsis_arg: Float 463 | periapsis_au: Float 464 | period_days: Float 465 | semi_major_axis_au: Float 466 | speed_kph: Float 467 | speed_mph: Float 468 | wikipedia: String 469 | } 470 | 471 | type Rocket { 472 | active: Boolean 473 | boosters: Int 474 | company: String 475 | cost_per_launch: Int 476 | country: String 477 | description: String 478 | diameter: Distance 479 | engines: RocketEngines 480 | first_flight: Date 481 | first_stage: RocketFirstStage 482 | height: Distance 483 | id: ID 484 | landing_legs: RocketLandingLegs 485 | mass: Mass 486 | name: String 487 | payload_weights: [RocketPayloadWeight] 488 | second_stage: RocketSecondStage 489 | stages: Int 490 | success_rate_pct: Int 491 | type: String 492 | wikipedia: String 493 | } 494 | 495 | type RocketEngines { 496 | engine_loss_max: String 497 | layout: String 498 | number: Int 499 | propellant_1: String 500 | propellant_2: String 501 | thrust_sea_level: Force 502 | thrust_to_weight: Float 503 | thrust_vacuum: Force 504 | type: String 505 | version: String 506 | } 507 | 508 | type RocketFirstStage { 509 | burn_time_sec: Int 510 | engines: Int 511 | fuel_amount_tons: Float 512 | reusable: Boolean 513 | thrust_sea_level: Force 514 | thrust_vacuum: Force 515 | } 516 | 517 | type RocketLandingLegs { 518 | material: String 519 | number: Int 520 | } 521 | 522 | type RocketPayloadWeight { 523 | id: String 524 | kg: Int 525 | lb: Int 526 | name: String 527 | } 528 | 529 | type RocketSecondStage { 530 | burn_time_sec: Int 531 | engines: Int 532 | fuel_amount_tons: Float 533 | payloads: RocketSecondStagePayloads 534 | thrust: Force 535 | } 536 | 537 | type RocketSecondStagePayloadCompositeFairing { 538 | diameter: Distance 539 | height: Distance 540 | } 541 | 542 | type RocketSecondStagePayloads { 543 | composite_fairing: RocketSecondStagePayloadCompositeFairing 544 | option_1: String 545 | } 546 | 547 | type RocketsResult { 548 | data: [Rocket] 549 | result: Result 550 | } 551 | 552 | type Ship { 553 | abs: Int 554 | active: Boolean 555 | attempted_landings: Int 556 | class: Int 557 | course_deg: Int 558 | home_port: String 559 | id: ID 560 | image: String 561 | imo: Int 562 | missions: [ShipMission] 563 | mmsi: Int 564 | model: String 565 | name: String 566 | position: ShipLocation 567 | roles: [String] 568 | speed_kn: Float 569 | status: String 570 | successful_landings: Int 571 | type: String 572 | url: String 573 | weight_kg: Int 574 | weight_lbs: Int 575 | year_built: Int 576 | } 577 | 578 | type ShipLocation { 579 | latitude: Float 580 | longitude: Float 581 | } 582 | 583 | type ShipMission { 584 | flight: String 585 | name: String 586 | } 587 | 588 | type ShipsResult { 589 | data: [Ship] 590 | result: Result 591 | } 592 | 593 | type Subscription { 594 | "fetch data from the table: \"users\"" 595 | users( 596 | "distinct select on columns" 597 | distinct_on: [users_select_column!] 598 | "limit the nuber of rows returned" 599 | limit: Int 600 | "skip the first n rows. Use only with order_by" 601 | offset: Int 602 | "sort the rows by one or more columns" 603 | order_by: [users_order_by!] 604 | "filter the rows returned" 605 | where: users_bool_exp 606 | ): [users!]! 607 | "fetch aggregated fields from the table: \"users\"" 608 | users_aggregate( 609 | "distinct select on columns" 610 | distinct_on: [users_select_column!] 611 | "limit the nuber of rows returned" 612 | limit: Int 613 | "skip the first n rows. Use only with order_by" 614 | offset: Int 615 | "sort the rows by one or more columns" 616 | order_by: [users_order_by!] 617 | "filter the rows returned" 618 | where: users_bool_exp 619 | ): users_aggregate! 620 | "fetch data from the table: \"users\" using primary key columns" 621 | users_by_pk(id: uuid!): users 622 | } 623 | 624 | type Volume { 625 | cubic_feet: Int 626 | cubic_meters: Int 627 | } 628 | 629 | "columns and relationships of \"users\"" 630 | type users { 631 | id: uuid! 632 | name: String 633 | rocket: String 634 | timestamp: timestamptz! 635 | twitter: String 636 | } 637 | 638 | "aggregated selection of \"users\"" 639 | type users_aggregate { 640 | aggregate: users_aggregate_fields 641 | nodes: [users!]! 642 | } 643 | 644 | "aggregate fields of \"users\"" 645 | type users_aggregate_fields { 646 | count(columns: [users_select_column!], distinct: Boolean): Int 647 | max: users_max_fields 648 | min: users_min_fields 649 | } 650 | 651 | "aggregate max on columns" 652 | type users_max_fields { 653 | name: String 654 | rocket: String 655 | timestamp: timestamptz 656 | twitter: String 657 | } 658 | 659 | "aggregate min on columns" 660 | type users_min_fields { 661 | name: String 662 | rocket: String 663 | timestamp: timestamptz 664 | twitter: String 665 | } 666 | 667 | "response of any mutation on the table \"users\"" 668 | type users_mutation_response { 669 | "number of affected rows by the mutation" 670 | affected_rows: Int! 671 | "data of the affected rows by the mutation" 672 | returning: [users!]! 673 | } 674 | 675 | "conflict action" 676 | enum conflict_action { 677 | "ignore the insert on this row" 678 | ignore 679 | "update the row with the given values" 680 | update 681 | } 682 | 683 | "column ordering options" 684 | enum order_by { 685 | "in the ascending order, nulls last" 686 | asc 687 | "in the ascending order, nulls first" 688 | asc_nulls_first 689 | "in the ascending order, nulls last" 690 | asc_nulls_last 691 | "in the descending order, nulls first" 692 | desc 693 | "in the descending order, nulls first" 694 | desc_nulls_first 695 | "in the descending order, nulls last" 696 | desc_nulls_last 697 | } 698 | 699 | "unique or primary key constraints on table \"users\"" 700 | enum users_constraint { 701 | constraint 702 | key 703 | or 704 | primary 705 | unique 706 | users_pkey 707 | } 708 | 709 | "select columns of table \"users\"" 710 | enum users_select_column { 711 | column 712 | id 713 | name 714 | rocket 715 | timestamp 716 | twitter 717 | } 718 | 719 | "update columns of table \"users\"" 720 | enum users_update_column { 721 | column 722 | id 723 | name 724 | rocket 725 | timestamp 726 | twitter 727 | } 728 | 729 | scalar Date 730 | 731 | scalar ObjectID 732 | 733 | scalar timestamptz 734 | 735 | scalar uuid 736 | 737 | input CapsulesFind { 738 | id: ID 739 | landings: Int 740 | mission: String 741 | original_launch: Date 742 | reuse_count: Int 743 | status: String 744 | type: String 745 | } 746 | 747 | input CoresFind { 748 | asds_attempts: Int 749 | asds_landings: Int 750 | block: Int 751 | id: String 752 | missions: String 753 | original_launch: Date 754 | reuse_count: Int 755 | rtls_attempts: Int 756 | rtls_landings: Int 757 | status: String 758 | water_landing: Boolean 759 | } 760 | 761 | input HistoryFind { 762 | end: Date 763 | flight_number: Int 764 | id: ID 765 | start: Date 766 | } 767 | 768 | input LaunchFind { 769 | apoapsis_km: Float 770 | block: Int 771 | cap_serial: String 772 | capsule_reuse: String 773 | core_flight: Int 774 | core_reuse: String 775 | core_serial: String 776 | customer: String 777 | eccentricity: Float 778 | end: Date 779 | epoch: Date 780 | fairings_recovered: String 781 | fairings_recovery_attempt: String 782 | fairings_reuse: String 783 | fairings_reused: String 784 | fairings_ship: String 785 | gridfins: String 786 | id: ID 787 | inclination_deg: Float 788 | land_success: String 789 | landing_intent: String 790 | landing_type: String 791 | landing_vehicle: String 792 | launch_date_local: Date 793 | launch_date_utc: Date 794 | launch_success: String 795 | launch_year: String 796 | legs: String 797 | lifespan_years: Float 798 | longitude: Float 799 | manufacturer: String 800 | mean_motion: Float 801 | mission_id: String 802 | mission_name: String 803 | nationality: String 804 | norad_id: Int 805 | orbit: String 806 | payload_id: String 807 | payload_type: String 808 | periapsis_km: Float 809 | period_min: Float 810 | raan: Float 811 | reference_system: String 812 | regime: String 813 | reused: String 814 | rocket_id: String 815 | rocket_name: String 816 | rocket_type: String 817 | second_stage_block: String 818 | semi_major_axis_km: Float 819 | ship: String 820 | side_core1_reuse: String 821 | side_core2_reuse: String 822 | site_id: String 823 | site_name: String 824 | site_name_long: String 825 | start: Date 826 | tbd: String 827 | tentative: String 828 | tentative_max_precision: String 829 | } 830 | 831 | input MissionsFind { 832 | id: ID 833 | manufacturer: String 834 | name: String 835 | payload_id: String 836 | } 837 | 838 | input PayloadsFind { 839 | apoapsis_km: Float 840 | customer: String 841 | eccentricity: Float 842 | epoch: Date 843 | inclination_deg: Float 844 | lifespan_years: Float 845 | longitude: Float 846 | manufacturer: String 847 | mean_motion: Float 848 | nationality: String 849 | norad_id: Int 850 | orbit: String 851 | payload_id: ID 852 | payload_type: String 853 | periapsis_km: Float 854 | period_min: Float 855 | raan: Float 856 | reference_system: String 857 | regime: String 858 | reused: Boolean 859 | semi_major_axis_km: Float 860 | } 861 | 862 | input ShipsFind { 863 | abs: Int 864 | active: Boolean 865 | attempted_landings: Int 866 | class: Int 867 | course_deg: Int 868 | home_port: String 869 | id: ID 870 | imo: Int 871 | latitude: Float 872 | longitude: Float 873 | mission: String 874 | mmsi: Int 875 | model: String 876 | name: String 877 | role: String 878 | speed_kn: Int 879 | status: String 880 | successful_landings: Int 881 | type: String 882 | weight_kg: Int 883 | weight_lbs: Int 884 | year_built: Int 885 | } 886 | 887 | "expression to compare columns of type String. All fields are combined with logical 'AND'." 888 | input String_comparison_exp { 889 | _eq: String 890 | _gt: String 891 | _gte: String 892 | _ilike: String 893 | _in: [String!] 894 | _is_null: Boolean 895 | _like: String 896 | _lt: String 897 | _lte: String 898 | _neq: String 899 | _nilike: String 900 | _nin: [String!] 901 | _nlike: String 902 | _nsimilar: String 903 | _similar: String 904 | } 905 | 906 | "expression to compare columns of type timestamptz. All fields are combined with logical 'AND'." 907 | input timestamptz_comparison_exp { 908 | _eq: timestamptz 909 | _gt: timestamptz 910 | _gte: timestamptz 911 | _in: [timestamptz!] 912 | _is_null: Boolean 913 | _lt: timestamptz 914 | _lte: timestamptz 915 | _neq: timestamptz 916 | _nin: [timestamptz!] 917 | } 918 | 919 | "order by aggregate values of table \"users\"" 920 | input users_aggregate_order_by { 921 | count: order_by 922 | max: users_max_order_by 923 | min: users_min_order_by 924 | } 925 | 926 | "input type for inserting array relation for remote table \"users\"" 927 | input users_arr_rel_insert_input { 928 | data: [users_insert_input!]! 929 | on_conflict: users_on_conflict 930 | } 931 | 932 | "Boolean expression to filter rows from the table \"users\". All fields are combined with a logical 'AND'." 933 | input users_bool_exp { 934 | _and: [users_bool_exp] 935 | _not: users_bool_exp 936 | _or: [users_bool_exp] 937 | id: uuid_comparison_exp 938 | name: String_comparison_exp 939 | rocket: String_comparison_exp 940 | timestamp: timestamptz_comparison_exp 941 | twitter: String_comparison_exp 942 | } 943 | 944 | "input type for inserting data into table \"users\"" 945 | input users_insert_input { 946 | id: uuid 947 | name: String 948 | rocket: String 949 | timestamp: timestamptz 950 | twitter: String 951 | } 952 | 953 | "order by max() on columns of table \"users\"" 954 | input users_max_order_by { 955 | name: order_by 956 | rocket: order_by 957 | timestamp: order_by 958 | twitter: order_by 959 | } 960 | 961 | "order by min() on columns of table \"users\"" 962 | input users_min_order_by { 963 | name: order_by 964 | rocket: order_by 965 | timestamp: order_by 966 | twitter: order_by 967 | } 968 | 969 | "input type for inserting object relation for remote table \"users\"" 970 | input users_obj_rel_insert_input { 971 | data: users_insert_input! 972 | on_conflict: users_on_conflict 973 | } 974 | 975 | "on conflict condition type for table \"users\"" 976 | input users_on_conflict { 977 | constraint: users_constraint! 978 | update_columns: [users_update_column!]! 979 | } 980 | 981 | "ordering options when selecting data from \"users\"" 982 | input users_order_by { 983 | id: order_by 984 | name: order_by 985 | rocket: order_by 986 | timestamp: order_by 987 | twitter: order_by 988 | } 989 | 990 | "input type for updating data in table \"users\"" 991 | input users_set_input { 992 | id: uuid 993 | name: String 994 | rocket: String 995 | timestamp: timestamptz 996 | twitter: String 997 | } 998 | 999 | "expression to compare columns of type uuid. All fields are combined with logical 'AND'." 1000 | input uuid_comparison_exp { 1001 | _eq: uuid 1002 | _gt: uuid 1003 | _gte: uuid 1004 | _in: [uuid!] 1005 | _is_null: Boolean 1006 | _lt: uuid 1007 | _lte: uuid 1008 | _neq: uuid 1009 | _nin: [uuid!] 1010 | } 1011 | --------------------------------------------------------------------------------