Pārlūkot izejas kodu

Merge branch 'master' of http://gogs.ioobot.com:6680/xy/online

wly 7 gadi atpakaļ
vecāks
revīzija
f97817a340

+ 17 - 17
src/app/App.jsx

@@ -21,7 +21,7 @@ import Create from "./graphqlService/component/schema/Create";
 import WxCreate from "./wechatService/wxCreate/WxCreate";
 
 
-import {SHOW_ALL_SCHEMA, SHOW_ALL_WXCONFIG} from "../gql";
+import {SHOW_ALL_SCHEMA, SHOW_CASE_SCHEMA,SHOW_PROJECT,CASE_SCHEMA_AND_PROJECT,SHOW_ALL_WXCONFIG} from "../gql";
 import axios from 'axios';
 import {getCookie, setCookie} from "../cookie";
 
@@ -358,10 +358,10 @@ class GraphqlSidebar extends Component {
 
     render() {
         return (
-            <Query query={gql(SHOW_ALL_SCHEMA)} variables={{user_id: this.state.userID}}>
+            <Query query={gql(CASE_SCHEMA_AND_PROJECT)} variables={{projectType:'graphql',user_id: this.state.userID}}>
                 {
                     ({loading, error, data}) => {
-                        // console.log('user schema data',data);
+                        console.log('CASE_SCHEMA_AND_PROJECT data', data);
                         if (loading) return <Spin style={{marginLeft: 3}}/>;
                         if (error) return 'error!';
                         localStorage.setItem('ecommerce', data.caseSchema.find(obj => obj.schemaName === 'ecommerce').schemaData);
@@ -386,9 +386,9 @@ class GraphqlSidebar extends Component {
                                     position: 'fixed'
                                 }}
                             >
-                                <SubMenu key="trial-case" title={<span><Icon type="appstore" theme="twoTone"/><span>
-                                    <FormattedMessage id="Case Show"/>
-                                </span></span>}>
+                                <SubMenu
+                                    key="trial-case"
+                                    title={<span><Icon type="appstore" theme="twoTone"/><span><FormattedMessage id="Case Show"/></span></span>}>
                                     {
                                         data.caseSchema.map((schema) =>
                                             <Menu.Item key={schema.schemaName}>
@@ -414,19 +414,20 @@ class GraphqlSidebar extends Component {
                                     }}/>
                                 </Menu.Item>
 
-                                <SubMenu key="my-create" title={<span><Icon type="user" theme="outlined"/><span>
-                                    <FormattedMessage id="My Create"/>
-                                </span></span>}>
+                                <SubMenu
+                                    key="my-create"
+                                    title={<span><Icon type="user" theme="outlined"/><span><FormattedMessage id="My Create"/></span></span>}>
                                     {
-                                        data.userSchema.map((schema) =>
-                                            <Menu.Item key={schema.schemaName}>
+                                        data.project.map((project) =>
+                                            <Menu.Item key={project.projectName}>
                                                 <Link to={{
-                                                    pathname: `/graphql-service/my-create/${schema.schemaName}`,
+                                                    pathname: `/graphql-service/my-create/${project.projectName}`,
                                                     state: {
-                                                        schemaName: schema.schemaName,
-                                                        schemaID: schema.id
+                                                        schemaName: project.projectName,
+                                                        schemaID: project.schema_id.id,
+                                                        projectId: project.id
                                                     }
-                                                }}>{schema.schemaName}</Link>
+                                                }}>{project.projectName}</Link>
                                             </Menu.Item>)
                                     }
                                 </SubMenu>
@@ -440,7 +441,6 @@ class GraphqlSidebar extends Component {
                                 </Menu.Item>
 
                             </Menu>
-
                         )
                     }
                 }
@@ -459,7 +459,7 @@ class WxConfigSiderbar extends Component {
 
     render() {
         return (
-            <Query query={gql(SHOW_ALL_WXCONFIG)} variables={{user_id: this.state.userID}}>
+            <Query query={gql(CASE_SCHEMA_AND_PROJECT)} variables={{user_id: this.state.userID}}>
                 {
                     ({loading, error, data}) => {
                         if (loading) return <Spin style={{marginLeft: 3}}/>;

+ 1 - 1
src/app/graphqlService/UserCreate.jsx

@@ -81,7 +81,7 @@ class UserCreate extends Component {
                                     case 'graphiql':
                                         return <Graphql/>;
                                     case 'template':
-                                        return <GenerateJs/>;
+                                        return <GenerateJs schemaID={schemaID} schemaName={schemaName}/>;
                                     case 'metabase':
                                         return <CaseMetabase/>;
                                     default:

+ 36 - 20
src/app/graphqlService/component/schema/Create.js

@@ -5,7 +5,7 @@ import {Modal, Row, Col, Input, Icon, Button, Spin} from 'antd';
 import {Mutation, Query} from "react-apollo";
 import gql from "graphql-tag";
 
-import {SHOW_SCHEMA, ADD_SCHEMA} from '../../../../gql'
+import {ADD_PROJECT_AND_SCHEMA,SHOW_PROJECT} from '../../../../gql'
 import './index.css';
 import {getCookie} from "../../../../cookie";
 import {idGen} from "../../../../func";
@@ -35,27 +35,44 @@ class Create extends Component {
     }
 
 
-    handleOk = (userID, create_schema) => {
-        let varobj = {
-            id: idGen('schema'),
+    handleOk = (userID, create_schema_and_project) => {
+        let schemaId = idGen('schema');
+        let projectId= idGen('project');
+        let schemaName = this.state.schemaName;
+        let createdAt = new Date().getTime();
+
+        let schemaVarObj = {
+            schemaId,
+            schemaName,
             user_id: userID,
-            createdAt: new Date().getTime(),
-            updatedAt: '',
+            schemaCreatedAt: createdAt,
+            schemaUpdatedAt: '',
             schemaState: 'create',
             schemaData: JSON.stringify([]),
             reference: ''
         };
-        let schemaName = this.state.schemaName;
+        let projectVarObj = {
+            projectCreatedAt: createdAt,
+            projectUpdatedAt: '',
+            database_id: '',
+            apiGWGroup_id: '',
+            projectName: schemaName,
+            deploy_id: '',
+            projectId,
+            projectType: 'graphql',
+            cloud_id: '',
+            user_id: userID,
+            wxConfig_id: '',
+            schema_id: schemaId
+        };
 
         this.setState({
             confirmLoading: true,
         });
 
-        create_schema({
-            variables: {
-                ...varobj,
-                schemaName
-            }
+        create_schema_and_project({
+            variables: {...schemaVarObj,...projectVarObj},
+            refetchQueries:[{query: gql(SHOW_PROJECT), variables: {projectType:'graphql',user_id: userID}}]
         });
         setTimeout(() => {
             this.setState({
@@ -69,7 +86,8 @@ class Create extends Component {
             pathname: `/graphql-service/my-create/${schemaName}`,
             state: {
                 schemaName,
-                schemaID: varobj.id,
+                schemaID:schemaId,
+                projectId: projectId,
                 create: true
             }
         });
@@ -82,11 +100,9 @@ class Create extends Component {
         return (
             <div>
                 <Mutation
-                    mutation={gql(ADD_SCHEMA)}
-                    refetchQueries={[{query: gql(SHOW_SCHEMA), variables: {user_id: userID}}]}
+                    mutation={gql(ADD_PROJECT_AND_SCHEMA)}
                 >
-
-                    {(create_schema, {loading, error}) => {
+                    {(create_schema_and_project, {loading, error}) => {
                         if (loading)
                             return <Spin style={{marginLeft: 30, marginTop: 10}}/>;
                         if (error)
@@ -97,15 +113,15 @@ class Create extends Component {
                                     <Modal title={msg}
                                            centered
                                            visible={visible}
-                                           onOk={() => this.handleOk(userID, create_schema)}
+                                           onOk={() => this.handleOk(userID, create_schema_and_project)}
                                            confirmLoading={confirmLoading}
                                            onCancel={() => {
                                                this.props.hideModal();
                                            }}
                                     >
                                         <div>
-                                            <p><FormattedMessage id="project name"/></p>
-                                            <FormattedMessage id="input project_name">
+                                            <p><FormattedMessage id="schema name"/></p>
+                                            <FormattedMessage id="input schema name">
                                                 {(msg) => (
                                                         <Input
                                                             className='add-input'

+ 31 - 23
src/app/graphqlService/component/schema/Schema.jsx

@@ -5,13 +5,13 @@ import './index.css';
 import {Mutation, Query} from "react-apollo";
 import gql from "graphql-tag";
 import {
-    DELETE_SCHEMA,
+    DELETE_PROJECT_AND_SCHEMA,
     SHOW_SCHEMA,
     SHOW_TABLE,
     UPDATE_SCHEMA,
-    UPDATE_SCHEMA_NAME,
+    UPDATE_SCHEMA_PROJECT_NAME,
     SEARCH_SCHEMA,
-    ADD_SCHEMA
+    ADD_SCHEMA, SHOW_PROJECT
 } from '../../../../gql'
 import Table from "./Table";
 import {request} from 'graphql-request'
@@ -392,6 +392,7 @@ class Schema extends Component {
                                                                              className={'delete-schema'}>
                                                                             <DeleteSchemaButton
                                                                                 userID={userID}
+                                                                                schemaID={this.state.schemaID}
                                                                                 schemaName={this.state.schemaName}
                                                                                 history={this.props.history}
                                                                             />
@@ -401,6 +402,7 @@ class Schema extends Component {
                                                                     <div className={'delete-schema'}>
                                                                         <DeleteSchemaButton
                                                                             userID={userID}
+                                                                            schemaID={this.state.schemaID}
                                                                             schemaName={this.state.schemaName}
                                                                             history={this.props.history}
                                                                         />
@@ -418,6 +420,7 @@ class Schema extends Component {
                                                                     <div className={'delete-schema'}>
                                                                         <DeleteSchemaButton
                                                                             userID={userID}
+                                                                            schemaID={this.state.schemaID}
                                                                             schemaName={this.state.schemaName}
                                                                             history={this.props.history}
                                                                         />
@@ -556,17 +559,18 @@ class DeleteSchemaButton extends Component {
     constructor(props) {
         super(props);
         this.state = {
-            schemaName: props.schemaName
+            schemaName: props.schemaName,
+            schemaId:props.schemaID
         }
     }
 
-    showConfirm = (delete_schema, schemaName, userID) => {
+    showConfirm = (delete_project_and_schema, schemaId, userID) => {
         let _this = this;
         confirm({
             title: 'Do you want to delete this schema?',
             content: 'It cannot be found back!',
             onOk() {
-                delete_schema({variables: {schemaName, user_id: userID}});
+                delete_project_and_schema({variables: {schemaId, user_id: userID}});
                 _this.props.history.push({
                     pathname: '/graphql-service',
                 });
@@ -578,22 +582,24 @@ class DeleteSchemaButton extends Component {
 
     render() {
         let userID = this.props.userID;
-        let schemaName = this.props.schemaName;
+        let {schemaName,schemaId} = this.state;
+
         return (
             <Mutation
-                mutation={gql(DELETE_SCHEMA)}
-                update={(cache) => {
-                    let data = cache.readQuery({query: gql(SHOW_SCHEMA), variables: {user_id: userID}});
-
-                    data.schema_by_props.splice(data.schema_by_props.findIndex(obj => obj.schemaName === this.state.schemaName), 1);
-                    cache.writeQuery({
-                        query: gql(SHOW_SCHEMA),
-                        variables: {user_id: userID},
-                        data
-                    });
-                }}
+                mutation={gql(DELETE_PROJECT_AND_SCHEMA)}
+                refetchQueries={[{query: gql(SHOW_PROJECT), variables: {projectType:'graphql',user_id: userID}}]}
+                // update={(cache) => {
+                //     let data = cache.readQuery({query: gql(SHOW_PROJECT), variables: {projectType:"graphql",user_id: userID}});
+                //
+                //     data.project.splice(data.project.findIndex(obj => obj.projectName === schemaName), 1);
+                //     cache.writeQuery({
+                //         query: gql(SHOW_PROJECT),
+                //         variables:  {projectType:"graphql",user_id: userID},
+                //         data
+                //     });
+                // }}
             >
-                {(delete_schema, {loading, error}) => {
+                {(delete_project_and_schema, {loading, error}) => {
                     if (error)
                         return 'error';
                     if (loading)
@@ -602,7 +608,7 @@ class DeleteSchemaButton extends Component {
                         <Button
                             type="danger"
                             onClick={() => {
-                                this.showConfirm(delete_schema, schemaName, userID);
+                                this.showConfirm(delete_project_and_schema, schemaId, userID);
                             }}
                         >
                             <FormattedMessage id="delete"/>
@@ -703,8 +709,8 @@ class ModifySchemaNameInput extends Component {
         let userID = this.props.userID;
         let schemaName = this.props.schemaName;
         return (
-            <Mutation mutation={gql(UPDATE_SCHEMA_NAME)}>
-                {(update_schema, {loading, error}) => {
+            <Mutation mutation={gql(UPDATE_SCHEMA_PROJECT_NAME)}>
+                {(update_schema_project_name, {loading, error}) => {
                     if (error)
                         return 'error';
                     if (loading)
@@ -720,12 +726,14 @@ class ModifySchemaNameInput extends Component {
                                         size="large"
                                         onChange={this.props.changeEditSchemaName}
                                         onSearch={value => {
-                                            update_schema({
+                                            update_schema_project_name({
                                                 variables: {
                                                     id: this.props.schemaID,
                                                     schemaName: value,
                                                     updateAt: new Date().getTime()
                                                 }
+                                            }).then((res)=>{
+                                                console.log('update_schema_project_name res',res)
                                             });
                                             this.props.history.push({
                                                 pathname: `/graphql-service/my-create/${value}`,

+ 148 - 3
src/gql.js

@@ -103,6 +103,18 @@ const SHOW_SCHEMA = `
             }
         `;
 
+const SHOW_CASE_SCHEMA = `
+            query SHOW_CASE_SCHEMA {
+                caseSchema:schema_by_props(user_id: "ioobot") {
+                    schemaData
+                    schemaName
+                    id
+                    reference
+                    schemaState
+                }
+            }
+        `;
+
 const SHOW_ALL_SCHEMA = `
             query SCHEMA($user_id: ID) {
                 userSchema:schema_by_props(user_id: $user_id) {
@@ -177,8 +189,8 @@ const UPDATE_SCHEMA = `
             }
         `;
 
-const UPDATE_SCHEMA_NAME = `
-            mutation SCHEMA($id: ID!, $schemaName: String, $updatedAt: String) {
+const UPDATE_SCHEMA_PROJECT_NAME = `
+            mutation UPDATE_SCHEMA_PROJECT_NAME($id: ID!, $schemaName: String, $updatedAt: String) {
                 update_schema(
                     id: $id,
                     updatedAt: $updatedAt,
@@ -188,9 +200,137 @@ const UPDATE_SCHEMA_NAME = `
                     id
                     schemaState
                 }
+                
+                update_project(
+                    schema_id: $id,
+                    updatedAt: $updatedAt,
+                    projectName: $schemaName,
+                ){
+                    projectName,
+                    id
+                }
             }
         `;
 
+const ADD_PROJECT_AND_SCHEMA = `
+             mutation ADD_PROJECT_AND_SCHEMA($schemaId: ID!, $user_id: ID!, $schemaName: String!, $schemaData: String!, $schemaCreatedAt: String, $schemaUpdatedAt: String, $schemaState: String, $reference: String,
+                 $projectCreatedAt: String, $projectUpdatedAt: String, $database_id: ID, $apiGWGroup_id: ID, $projectName: String, $deploy_id: ID, $projectId: ID!, $projectType: String, $cloud_id: ID, $user_id: ID, $wxConfig_id: ID, $schema_id: ID) {
+                     create_schema(
+                         id: $schemaId,
+                         user_id: $user_id,
+                         schemaName: $schemaName,
+                         createdAt: $schemaCreatedAt,
+                         updatedAt: $schemaUpdatedAt,
+                         schemaData: $schemaData,
+                         schemaState: $schemaState
+                         reference: $reference
+                     ) {
+                         schemaName,
+                         schemaData
+                         id
+                         reference
+                         schemaState
+                     }
+                    
+                     create_project(
+                         createdAt: $projectCreatedAt,
+                         updatedAt: $projectUpdatedAt,
+                         database_id: $database_id,
+                         apiGWGroup_id: $apiGWGroup_id,
+                         projectName: $projectName,
+                         deploy_id: $deploy_id,
+                         id: $projectId,
+                         projectType: $projectType,
+                         cloud_id: $cloud_id,
+                         user_id: $user_id,
+                         wxConfig_id: $wxConfig_id,
+                         schema_id: $schema_id
+                     ) {
+                         updatedAt
+                         createdAt   
+                         projectName
+                         id
+                         projectType
+                         schema_id {
+                             updatedAt
+                             schemaState
+                             authWrite
+                             authReadObjects
+                             createdAt
+                             authRead
+                             schemaName
+                             reference
+                             id
+                             schemaData
+                             authReadWrite
+                             authWriteObjects
+                         }
+                     }
+                 }
+             `;
+
+const CASE_SCHEMA_AND_PROJECT = `
+            query CASE_SCHEMA_AND_PROJECT($user_id: ID, $projectType: String ) {
+                caseSchema:schema_by_props(user_id: "ioobot") {
+                    schemaData
+                    schemaName
+                    id
+                    reference
+                    schemaState
+                }
+                
+                project:project_by_props(
+                    projectType: $projectType,
+                    user_id: $user_id
+                ) {
+                    updatedAt
+                    apiGWGroup_id {
+                        id
+                    }
+                    createdAt
+                    projectName
+                    id
+                    projectType
+                    wxConfig_id {
+                        id
+                    }
+                    schema_id {
+                        id
+                    }
+                }
+            }
+         `;
+
+const SHOW_PROJECT = `
+             query PROJECT_BY_PROPS($projectType: String, $user_id: ID) {
+                 project:project_by_props(
+                     projectType: $projectType,
+                     user_id: $user_id
+                 ) {
+                     updatedAt
+                     apiGWGroup_id {
+                         id
+                     }
+                     createdAt
+                     projectName
+                     id
+                     projectType
+                     wxConfig_id {
+                         id
+                     }
+                     schema_id {
+                         id
+                     }
+                 }
+             }
+         `;
+
+const DELETE_PROJECT_AND_SCHEMA = `
+            mutation DELETE_PROJECT_AND_SCHEMA($schemaId: ID, $user_id: ID) {
+                delete_schema(id: $schemaId, user_id: $user_id)
+                delete_project(schema_id: $schemaId, user_id: $user_id)
+            }
+        `;
 
 const SHOW_TABLE = `
             query TABLE($schema_id: ID!) {
@@ -684,12 +824,17 @@ export {
     UPDATE_USER,
     SEARCH_SCHEMA,
     ADD_SCHEMA,
+    SHOW_CASE_SCHEMA,
     SHOW_ALL_SCHEMA,
     SHOW_SCHEMA,
     UPDATE_SCHEMA,
-    UPDATE_SCHEMA_NAME,
+    UPDATE_SCHEMA_PROJECT_NAME,
     DELETE_SCHEMA,
+    DELETE_PROJECT_AND_SCHEMA,
     SHOW_TABLE,
+    ADD_PROJECT_AND_SCHEMA,
+    CASE_SCHEMA_AND_PROJECT,
+    SHOW_PROJECT,
     ADD_CLOUD,
     SHOW_CLOUD,
     UPDATE_CLOUD,

+ 4 - 2
src/language/en_US.js

@@ -21,8 +21,10 @@ const en_US = {
     "Download":"Download",
 
     "Create Graphql Service": 'Create Graphql Service',
-    "project name": 'project name',
-    "input project_name": 'input project_name',
+    "service name": 'service name',
+    "input service name": 'input service name',
+    "schema name": 'schema name',
+    "input schema name": 'input schema_name',
 
     "Name":"Name",
     "name":"name",

+ 4 - 2
src/language/zh_CN.js

@@ -21,8 +21,10 @@ const zh_CN = {
     "Download":"下载",
 
     "Create Graphql Service": '创建 Graphql服务',
-    "project name": '项目名',
-    "input project_name": '请输入项目名',
+    "service name": '服务名称',
+    "input service name": '请输入服务名称',
+    "schema name": '数据表结构名称',
+    "input schema name": '请输入数据表结构名称',
 
     "Name":"名称",
     "name":"名称",

+ 3 - 3
src/login/CloudConfig.js

@@ -152,15 +152,15 @@ class CloudConfig extends Component {
                             <div style={{marginBottom: 15}}>
                                 <div>
                                     <div style={{marginBottom: 20}}>
-                                        <span className='item-title-cloud'>APP ID:</span>
+                                        <span className='item-title-cloud'>APPID:</span>
                                         <Input style={{width: 250}} value={this.state.tenAppID} onChange={this.inputChange('tenAppID')}/>
                                     </div>
                                     <div style={{marginBottom: 20}}>
-                                        <span className='item-title-cloud'>secret ID:</span>
+                                        <span className='item-title-cloud'>SecretId:</span>
                                         <Input style={{width: 250}} value={this.state.tenID} onChange={this.inputChange('tenID')}/>
                                     </div>
                                     <div style={{marginBottom: 20}}>
-                                        <span className='item-title-cloud'>secret Key:</span>
+                                        <span className='item-title-cloud'>SecretKey:</span>
                                         <Input style={{width: 250}} value={this.state.tenKey} onChange={this.inputChange('tenKey')}/>
                                     </div>
                                     {