Working on vendors favorite JSON form - issues with additional fields + rehydrating data
This commit is contained in:
@@ -2,10 +2,12 @@ import React from "react";
|
||||
import ReactDOM from "react-dom";
|
||||
import Alert from "./alert.component";
|
||||
import { MockedProvider } from "@apollo/react-testing";
|
||||
import { shallow } from "enzyme";
|
||||
import { shallow, mount } from "enzyme";
|
||||
|
||||
const div = document.createElement("div");
|
||||
|
||||
it("renders without crashing", () => {
|
||||
shallow(<Alert type="error" />);
|
||||
const wrapper = mount(<Alert type="error" message="Test Error" />);
|
||||
console.log("wrapper", wrapper);
|
||||
// expect(wrapper.children()).to.have.lengthOf(1);
|
||||
});
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import React from "react";
|
||||
import { shallow } from "enzyme";
|
||||
import AllocationsAssignmentContainer from "./allocations-assignment.container";
|
||||
|
||||
describe("LineAllocationsContainer", () => {
|
||||
let mockRefetch;
|
||||
let jobLineId;
|
||||
let wrapper;
|
||||
beforeEach(() => {
|
||||
mockRefetch = jest.fn;
|
||||
jobLineId = "b76e44a8-943f-4c67-b8f4-38d14db8b4b8";
|
||||
const mockProps = {
|
||||
refetch: mockRefetch,
|
||||
jobLineId,
|
||||
hours: 5
|
||||
};
|
||||
|
||||
shallow(<AllocationsAssignmentContainer {...mockProps} />);
|
||||
});
|
||||
});
|
||||
@@ -1,8 +1,19 @@
|
||||
import { Button, Form, Input, InputNumber, Switch } from "antd";
|
||||
import {
|
||||
Button,
|
||||
Checkbox,
|
||||
Col,
|
||||
Form,
|
||||
Icon,
|
||||
Input,
|
||||
InputNumber,
|
||||
Row
|
||||
} from "antd";
|
||||
import React from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import FormItemEmail from "../form-items-formatted/email-form-item.component";
|
||||
import ResetForm from "../form-items-formatted/reset-form-item.component";
|
||||
let id = 0;
|
||||
|
||||
export default function VendorsFormComponent({ form, vendor, handleDelete }) {
|
||||
const {
|
||||
getFieldDecorator,
|
||||
@@ -11,61 +22,131 @@ export default function VendorsFormComponent({ form, vendor, handleDelete }) {
|
||||
resetFields
|
||||
} = form;
|
||||
|
||||
getFieldDecorator("keys", {
|
||||
initialValue: Array.isArray(vendor.favorite) ? vendor.favorite : []
|
||||
});
|
||||
|
||||
const remove = k => {
|
||||
// can use data-binding to get
|
||||
const keys = form.getFieldValue("keys");
|
||||
console.log("keys", keys);
|
||||
// We need at least one passenger
|
||||
if (keys.length === 1) {
|
||||
return;
|
||||
}
|
||||
// can use data-binding to set
|
||||
form.setFieldsValue({
|
||||
keys: keys.filter(key => key !== k)
|
||||
});
|
||||
};
|
||||
|
||||
const add = props => {
|
||||
console.log("props", props);
|
||||
// can use data-binding to get
|
||||
const keys = form.getFieldValue("keys");
|
||||
console.log("keys", keys);
|
||||
const nextKeys = keys.concat(id++);
|
||||
// can use data-binding to set
|
||||
// important! notify form to detect changes
|
||||
form.setFieldsValue({
|
||||
keys: nextKeys
|
||||
});
|
||||
};
|
||||
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<div>
|
||||
{isFieldsTouched() ? <ResetForm resetFields={resetFields} /> : null}
|
||||
<Button htmlType='submit' type='primary'>
|
||||
<Button htmlType="submit" type="primary">
|
||||
{t("general.actions.save")}
|
||||
</Button>
|
||||
<Button type='danger' onClick={handleDelete}>
|
||||
<Button type="danger" onClick={handleDelete}>
|
||||
{t("general.actions.delete")}
|
||||
</Button>
|
||||
|
||||
{getFieldValue("keys").map((k, index) => (
|
||||
<Form.Item required={false} key={k}>
|
||||
{getFieldDecorator(`favorite[${k}].make`, {
|
||||
validateTrigger: ["onChange", "onBlur"]
|
||||
})(
|
||||
<Input
|
||||
placeholder="passenger name"
|
||||
style={{ width: "60%", marginRight: 8 }}
|
||||
/>
|
||||
)}
|
||||
{getFieldValue("keys").length > 1 ? (
|
||||
<Icon
|
||||
className="dynamic-delete-button"
|
||||
type="minus-circle-o"
|
||||
onClick={() => remove(k)}
|
||||
/>
|
||||
) : null}
|
||||
<Form.Item label="Group">
|
||||
{getFieldDecorator(`favorite[${k}].type`, {
|
||||
initialValue: null
|
||||
})(
|
||||
<Checkbox.Group style={{ width: "100%" }}>
|
||||
<Row>
|
||||
<Col span={8}>
|
||||
<Checkbox value="OEM">OEM</Checkbox>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Checkbox value="LKQ">LKQ</Checkbox>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Checkbox value="AM">AM</Checkbox>
|
||||
</Col>
|
||||
</Row>
|
||||
</Checkbox.Group>
|
||||
)}
|
||||
</Form.Item>
|
||||
</Form.Item>
|
||||
))}
|
||||
<Form.Item label={t("vendors.fields.favorite")}>
|
||||
<Button type="dashed" onClick={add} style={{ width: "60%" }}>
|
||||
<Icon type="plus" /> Add field
|
||||
</Button>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item label={t("vendors.fields.zip")}>
|
||||
{getFieldDecorator("zip", {
|
||||
initialValue: vendor.zip
|
||||
})(<Input name='zip' />)}
|
||||
})(<Input name="zip" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.terms")}>
|
||||
{getFieldDecorator("terms", {
|
||||
initialValue: vendor.terms
|
||||
})(<Input name='terms' />)}
|
||||
})(<Input name="terms" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.taxid")}>
|
||||
{getFieldDecorator("taxid", {
|
||||
initialValue: vendor.taxid
|
||||
})(<Input name='taxid' />)}
|
||||
})(<Input name="taxid" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.street1")}>
|
||||
{getFieldDecorator("street1", {
|
||||
initialValue: vendor.street1
|
||||
})(<Input name='street1' />)}
|
||||
})(<Input name="street1" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.street2")}>
|
||||
{getFieldDecorator("street2", {
|
||||
initialValue: vendor.street2
|
||||
})(<Input name='street2' />)}
|
||||
})(<Input name="street2" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.state")}>
|
||||
{getFieldDecorator("state", {
|
||||
initialValue: vendor.state
|
||||
})(<Input name='state' />)}
|
||||
</Form.Item>{" "}
|
||||
})(<Input name="state" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.prompt_discount")}>
|
||||
{getFieldDecorator("prompt_discount", {
|
||||
initialValue: vendor.prompt_discount
|
||||
})(<InputNumber name='prompt_discount' />)}
|
||||
})(<InputNumber name="prompt_discount" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.name")}>
|
||||
{getFieldDecorator("name", {
|
||||
initialValue: vendor.name
|
||||
})(<Input name='name' />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.favorite")}>
|
||||
{getFieldDecorator("favorite", {
|
||||
initialValue: vendor.favorite,
|
||||
valuePropName: "checked"
|
||||
})(<Switch name='favorite' />)}
|
||||
})(<Input name="name" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.email")}>
|
||||
{getFieldDecorator("email", {
|
||||
@@ -76,38 +157,38 @@ export default function VendorsFormComponent({ form, vendor, handleDelete }) {
|
||||
message: t("general.validation.invalidemail")
|
||||
}
|
||||
]
|
||||
})(<FormItemEmail name='email' email={getFieldValue("email")} />)}
|
||||
})(<FormItemEmail name="email" email={getFieldValue("email")} />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.due_date")}>
|
||||
{getFieldDecorator("due_date", {
|
||||
initialValue: vendor.due_date
|
||||
})(<InputNumber name='due_date' />)}
|
||||
})(<InputNumber name="due_date" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.display_name")}>
|
||||
{getFieldDecorator("display_name", {
|
||||
initialValue: vendor.display_name
|
||||
})(<Input name='display_name' />)}
|
||||
})(<Input name="display_name" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.discount")}>
|
||||
{getFieldDecorator("discount", {
|
||||
initialValue: vendor.discount
|
||||
})(<InputNumber name='discount' />)}
|
||||
})(<InputNumber name="discount" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.country")}>
|
||||
{getFieldDecorator("country", {
|
||||
initialValue: vendor.country
|
||||
})(<Input name='country' />)}
|
||||
})(<Input name="country" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.cost_center")}>
|
||||
{getFieldDecorator("cost_center", {
|
||||
initialValue: vendor.cost_center,
|
||||
rules: [{ required: true, message: t("general.validation.required") }]
|
||||
})(<Input name='cost_center' />)}
|
||||
})(<Input name="cost_center" />)}
|
||||
</Form.Item>
|
||||
<Form.Item label={t("vendors.fields.city")}>
|
||||
{getFieldDecorator("city", {
|
||||
initialValue: vendor.city
|
||||
})(<Input name='city' />)}
|
||||
})(<Input name="city" />)}
|
||||
</Form.Item>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -1,29 +1,36 @@
|
||||
import { Form, notification } from "antd";
|
||||
import React from "react";
|
||||
import { Form } from "antd";
|
||||
import VendorsFormComponent from "./vendors-form.component";
|
||||
import { useMutation, useQuery } from "react-apollo";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { notification } from "antd";
|
||||
import {
|
||||
UPDATE_VENDOR,
|
||||
INSERT_NEW_VENDOR,
|
||||
DELETE_VENDOR
|
||||
} from "../../graphql/vendors.queries";
|
||||
import { useMutation } from "react-apollo";
|
||||
|
||||
import { connect } from "react-redux";
|
||||
import { createStructuredSelector } from "reselect";
|
||||
import {
|
||||
DELETE_VENDOR,
|
||||
INSERT_NEW_VENDOR,
|
||||
UPDATE_VENDOR,
|
||||
QUERY_VENDOR_BY_ID
|
||||
} from "../../graphql/vendors.queries";
|
||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||
import VendorsFormComponent from "./vendors-form.component";
|
||||
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
||||
import AlertComponent from "../alert/alert.component";
|
||||
|
||||
const mapStateToProps = createStructuredSelector({
|
||||
bodyshop: selectBodyshop
|
||||
});
|
||||
|
||||
function VendorsFormContainer({ form, vendor, refetch, bodyshop }) {
|
||||
function VendorsFormContainer({ form, vendorId, refetch, bodyshop }) {
|
||||
const { t } = useTranslation();
|
||||
const { loading, error, data } = useQuery(QUERY_VENDOR_BY_ID, {
|
||||
variables: { id: vendorId },
|
||||
fetchPolicy: "network-only",
|
||||
skip: !vendorId
|
||||
});
|
||||
const [updateVendor] = useMutation(UPDATE_VENDOR);
|
||||
const [insertvendor] = useMutation(INSERT_NEW_VENDOR);
|
||||
const [deleteVendor] = useMutation(DELETE_VENDOR);
|
||||
const handleDelete = () => {
|
||||
deleteVendor({ variables: { id: vendor.id } })
|
||||
deleteVendor({ variables: { id: vendorId } })
|
||||
.then(r => {
|
||||
notification["success"]({
|
||||
message: t("vendors.successes.deleted")
|
||||
@@ -48,10 +55,12 @@ function VendorsFormContainer({ form, vendor, refetch, bodyshop }) {
|
||||
});
|
||||
}
|
||||
if (!err) {
|
||||
if (vendor.id) {
|
||||
console.log("Received values of form: ", values);
|
||||
delete values.keys;
|
||||
if (vendorId) {
|
||||
//It's a vendor to update.
|
||||
updateVendor({
|
||||
variables: { id: vendor.id, vendor: values }
|
||||
variables: { id: vendorId, vendor: values }
|
||||
})
|
||||
.then(r => {
|
||||
notification["success"]({
|
||||
@@ -87,20 +96,20 @@ function VendorsFormContainer({ form, vendor, refetch, bodyshop }) {
|
||||
});
|
||||
};
|
||||
|
||||
if (loading) return <LoadingSpinner />;
|
||||
if (error) return <AlertComponent message={error.message} type="error" />;
|
||||
return (
|
||||
<div>
|
||||
<Form onSubmit={handleSubmit} autoComplete='new-password'>
|
||||
{vendor ? (
|
||||
<VendorsFormComponent
|
||||
form={form}
|
||||
vendor={vendor}
|
||||
handleDelete={handleDelete}
|
||||
/>
|
||||
) : (
|
||||
t("vendors.labels.noneselected")
|
||||
)}
|
||||
</Form>
|
||||
</div>
|
||||
<Form onSubmit={handleSubmit} autoComplete="new-password">
|
||||
{data ? (
|
||||
<VendorsFormComponent
|
||||
form={form}
|
||||
vendor={data ? data.vendors_by_pk : null}
|
||||
handleDelete={handleDelete}
|
||||
/>
|
||||
) : (
|
||||
t("vendors.labels.noneselected")
|
||||
)}
|
||||
</Form>
|
||||
);
|
||||
}
|
||||
export default connect(
|
||||
|
||||
@@ -26,11 +26,6 @@ export default function VendorsListComponent({
|
||||
sorter: (a, b) => alphaSort(a.name, b.name),
|
||||
sortOrder: state.sortedInfo.columnKey === "name" && state.sortedInfo.order
|
||||
},
|
||||
{
|
||||
title: t("vendors.fields.favorite"),
|
||||
dataIndex: "favorite",
|
||||
key: "favorite"
|
||||
},
|
||||
{
|
||||
title: t("vendors.fields.cost_center"),
|
||||
dataIndex: "cost_center",
|
||||
@@ -81,10 +76,10 @@ export default function VendorsListComponent({
|
||||
</div>
|
||||
);
|
||||
}}
|
||||
size='small'
|
||||
size="small"
|
||||
pagination={{ position: "top" }}
|
||||
columns={columns.map(item => ({ ...item }))}
|
||||
rowKey='id'
|
||||
rowKey="id"
|
||||
onChange={handleTableChange}
|
||||
dataSource={vendors}
|
||||
rowSelection={{
|
||||
|
||||
@@ -42,7 +42,7 @@ const errorLink = onError(
|
||||
// });
|
||||
// console.log("forward", forward);
|
||||
// console.log("operation", operation);
|
||||
return forward(operation).subscribe();
|
||||
return forward(operation);
|
||||
|
||||
// return new Observable(observer => {
|
||||
// const subscriber = {
|
||||
|
||||
@@ -39,7 +39,6 @@ export const QUERY_ALL_VENDORS = gql`
|
||||
vendors {
|
||||
name
|
||||
id
|
||||
favorite
|
||||
street1
|
||||
cost_center
|
||||
city
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
import React from "react";
|
||||
import { Typography } from "antd";
|
||||
import { Typography, Layout } from "antd";
|
||||
|
||||
import HeaderContainer from "../../components/header/header.container";
|
||||
|
||||
export default function LandingPage() {
|
||||
const { Header, Content } = Layout;
|
||||
return (
|
||||
<div>
|
||||
<HeaderContainer landingHeader />
|
||||
<Typography.Title>Welcome to bodyshop.app.</Typography.Title>
|
||||
</div>
|
||||
<Layout style={{ minHeight: "100vh" }}>
|
||||
<Header>
|
||||
<HeaderContainer landingHeader />
|
||||
</Header>
|
||||
|
||||
<Content className="content-container" style={{ padding: "0em 4em 4em" }}>
|
||||
<Typography.Title>Welcome to bodyshop.app.</Typography.Title>
|
||||
</Content>
|
||||
</Layout>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,9 @@ export default function ShopVendorPageComponent({ selectedVendorState }) {
|
||||
return (
|
||||
<div>
|
||||
<VendorsListContainer selectedVendorState={selectedVendorState} />
|
||||
<VendorsFormContainer vendor={selectedVendorState[0]} />
|
||||
<VendorsFormContainer
|
||||
vendorId={selectedVendorState[0] ? selectedVendorState[0].id : null}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
- args:
|
||||
sql: ALTER TABLE "public"."vendors" ALTER COLUMN "favorite" TYPE boolean;
|
||||
type: run_sql
|
||||
- args:
|
||||
sql: ALTER TABLE "public"."vendors" ALTER COLUMN "favorite" SET NOT NULL;
|
||||
type: run_sql
|
||||
- args:
|
||||
sql: COMMENT ON COLUMN "public"."vendors"."favorite" IS E'null'
|
||||
type: run_sql
|
||||
@@ -0,0 +1,9 @@
|
||||
- args:
|
||||
sql: ALTER TABLE "public"."vendors" ALTER COLUMN "favorite" TYPE bool;
|
||||
type: run_sql
|
||||
- args:
|
||||
sql: ALTER TABLE "public"."vendors" ALTER COLUMN "favorite" DROP NOT NULL;
|
||||
type: run_sql
|
||||
- args:
|
||||
sql: COMMENT ON COLUMN "public"."vendors"."favorite" IS E''
|
||||
type: run_sql
|
||||
@@ -0,0 +1,47 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_insert_permission
|
||||
- args:
|
||||
permission:
|
||||
check:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
columns:
|
||||
- id
|
||||
- created_at
|
||||
- updated_at
|
||||
- bodyshopid
|
||||
- name
|
||||
- street1
|
||||
- street2
|
||||
- city
|
||||
- state
|
||||
- zip
|
||||
- country
|
||||
- email
|
||||
- taxid
|
||||
- discount
|
||||
- prompt_discount
|
||||
- due_date
|
||||
- terms
|
||||
- display_name
|
||||
- cost_center
|
||||
- favorite
|
||||
localPresets:
|
||||
- key: ""
|
||||
value: ""
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_insert_permission
|
||||
@@ -0,0 +1,46 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_insert_permission
|
||||
- args:
|
||||
permission:
|
||||
check:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
columns:
|
||||
- bodyshopid
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- created_at
|
||||
- discount
|
||||
- display_name
|
||||
- due_date
|
||||
- email
|
||||
- id
|
||||
- name
|
||||
- prompt_discount
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- updated_at
|
||||
- zip
|
||||
localPresets:
|
||||
- key: ""
|
||||
value: ""
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_insert_permission
|
||||
@@ -0,0 +1,45 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_select_permission
|
||||
- args:
|
||||
permission:
|
||||
allow_aggregations: false
|
||||
columns:
|
||||
- favorite
|
||||
- due_date
|
||||
- discount
|
||||
- prompt_discount
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- display_name
|
||||
- email
|
||||
- name
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- zip
|
||||
- created_at
|
||||
- updated_at
|
||||
- bodyshopid
|
||||
- id
|
||||
computed_fields: []
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_select_permission
|
||||
@@ -0,0 +1,44 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_select_permission
|
||||
- args:
|
||||
permission:
|
||||
allow_aggregations: false
|
||||
columns:
|
||||
- bodyshopid
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- created_at
|
||||
- discount
|
||||
- display_name
|
||||
- due_date
|
||||
- email
|
||||
- id
|
||||
- name
|
||||
- prompt_discount
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- updated_at
|
||||
- zip
|
||||
computed_fields: []
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_select_permission
|
||||
@@ -0,0 +1,47 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_update_permission
|
||||
- args:
|
||||
permission:
|
||||
columns:
|
||||
- favorite
|
||||
- due_date
|
||||
- discount
|
||||
- prompt_discount
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- display_name
|
||||
- email
|
||||
- name
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- zip
|
||||
- created_at
|
||||
- updated_at
|
||||
- bodyshopid
|
||||
- id
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
localPresets:
|
||||
- key: ""
|
||||
value: ""
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_update_permission
|
||||
@@ -0,0 +1,46 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_update_permission
|
||||
- args:
|
||||
permission:
|
||||
columns:
|
||||
- bodyshopid
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- created_at
|
||||
- discount
|
||||
- display_name
|
||||
- due_date
|
||||
- email
|
||||
- id
|
||||
- name
|
||||
- prompt_discount
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- updated_at
|
||||
- zip
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
localPresets:
|
||||
- key: ""
|
||||
value: ""
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_update_permission
|
||||
@@ -0,0 +1,9 @@
|
||||
- args:
|
||||
sql: ALTER TABLE "public"."vendors" ADD COLUMN "favorite" bool
|
||||
type: run_sql
|
||||
- args:
|
||||
sql: ALTER TABLE "public"."vendors" ALTER COLUMN "favorite" DROP NOT NULL
|
||||
type: run_sql
|
||||
- args:
|
||||
sql: ALTER TABLE "public"."vendors" ALTER COLUMN "favorite" SET DEFAULT false
|
||||
type: run_sql
|
||||
@@ -0,0 +1,3 @@
|
||||
- args:
|
||||
sql: ALTER TABLE "public"."vendors" DROP COLUMN "favorite" CASCADE
|
||||
type: run_sql
|
||||
@@ -0,0 +1,3 @@
|
||||
- args:
|
||||
sql: ALTER TABLE "public"."vendors" DROP COLUMN "favorite";
|
||||
type: run_sql
|
||||
@@ -0,0 +1,3 @@
|
||||
- args:
|
||||
sql: ALTER TABLE "public"."vendors" ADD COLUMN "favorite" jsonb NULL;
|
||||
type: run_sql
|
||||
@@ -0,0 +1,46 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_insert_permission
|
||||
- args:
|
||||
permission:
|
||||
check:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
columns:
|
||||
- bodyshopid
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- created_at
|
||||
- discount
|
||||
- display_name
|
||||
- due_date
|
||||
- email
|
||||
- id
|
||||
- name
|
||||
- prompt_discount
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- updated_at
|
||||
- zip
|
||||
localPresets:
|
||||
- key: ""
|
||||
value: ""
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_insert_permission
|
||||
@@ -0,0 +1,47 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_insert_permission
|
||||
- args:
|
||||
permission:
|
||||
check:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
columns:
|
||||
- due_date
|
||||
- favorite
|
||||
- discount
|
||||
- prompt_discount
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- display_name
|
||||
- email
|
||||
- name
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- zip
|
||||
- created_at
|
||||
- updated_at
|
||||
- bodyshopid
|
||||
- id
|
||||
localPresets:
|
||||
- key: ""
|
||||
value: ""
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_insert_permission
|
||||
@@ -0,0 +1,44 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_select_permission
|
||||
- args:
|
||||
permission:
|
||||
allow_aggregations: false
|
||||
columns:
|
||||
- bodyshopid
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- created_at
|
||||
- discount
|
||||
- display_name
|
||||
- due_date
|
||||
- email
|
||||
- id
|
||||
- name
|
||||
- prompt_discount
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- updated_at
|
||||
- zip
|
||||
computed_fields: []
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_select_permission
|
||||
@@ -0,0 +1,45 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_select_permission
|
||||
- args:
|
||||
permission:
|
||||
allow_aggregations: false
|
||||
columns:
|
||||
- due_date
|
||||
- favorite
|
||||
- discount
|
||||
- prompt_discount
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- display_name
|
||||
- email
|
||||
- name
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- zip
|
||||
- created_at
|
||||
- updated_at
|
||||
- bodyshopid
|
||||
- id
|
||||
computed_fields: []
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_select_permission
|
||||
@@ -0,0 +1,46 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_update_permission
|
||||
- args:
|
||||
permission:
|
||||
columns:
|
||||
- bodyshopid
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- created_at
|
||||
- discount
|
||||
- display_name
|
||||
- due_date
|
||||
- email
|
||||
- id
|
||||
- name
|
||||
- prompt_discount
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- updated_at
|
||||
- zip
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
localPresets:
|
||||
- key: ""
|
||||
value: ""
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_update_permission
|
||||
@@ -0,0 +1,47 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_update_permission
|
||||
- args:
|
||||
permission:
|
||||
columns:
|
||||
- due_date
|
||||
- favorite
|
||||
- discount
|
||||
- prompt_discount
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- display_name
|
||||
- email
|
||||
- name
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- zip
|
||||
- created_at
|
||||
- updated_at
|
||||
- bodyshopid
|
||||
- id
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
localPresets:
|
||||
- key: ""
|
||||
value: ""
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_update_permission
|
||||
@@ -0,0 +1,46 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_insert_permission
|
||||
- args:
|
||||
permission:
|
||||
check:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
columns:
|
||||
- bodyshopid
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- created_at
|
||||
- discount
|
||||
- display_name
|
||||
- due_date
|
||||
- email
|
||||
- id
|
||||
- name
|
||||
- prompt_discount
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- updated_at
|
||||
- zip
|
||||
localPresets:
|
||||
- key: ""
|
||||
value: ""
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_insert_permission
|
||||
@@ -0,0 +1,47 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_insert_permission
|
||||
- args:
|
||||
permission:
|
||||
check:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
columns:
|
||||
- due_date
|
||||
- favorite
|
||||
- discount
|
||||
- prompt_discount
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- display_name
|
||||
- email
|
||||
- name
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- zip
|
||||
- created_at
|
||||
- updated_at
|
||||
- bodyshopid
|
||||
- id
|
||||
localPresets:
|
||||
- key: ""
|
||||
value: ""
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_insert_permission
|
||||
@@ -0,0 +1,44 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_select_permission
|
||||
- args:
|
||||
permission:
|
||||
allow_aggregations: false
|
||||
columns:
|
||||
- bodyshopid
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- created_at
|
||||
- discount
|
||||
- display_name
|
||||
- due_date
|
||||
- email
|
||||
- id
|
||||
- name
|
||||
- prompt_discount
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- updated_at
|
||||
- zip
|
||||
computed_fields: []
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_select_permission
|
||||
@@ -0,0 +1,45 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_select_permission
|
||||
- args:
|
||||
permission:
|
||||
allow_aggregations: false
|
||||
columns:
|
||||
- due_date
|
||||
- favorite
|
||||
- discount
|
||||
- prompt_discount
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- display_name
|
||||
- email
|
||||
- name
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- zip
|
||||
- created_at
|
||||
- updated_at
|
||||
- bodyshopid
|
||||
- id
|
||||
computed_fields: []
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_select_permission
|
||||
@@ -0,0 +1,46 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_update_permission
|
||||
- args:
|
||||
permission:
|
||||
columns:
|
||||
- bodyshopid
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- created_at
|
||||
- discount
|
||||
- display_name
|
||||
- due_date
|
||||
- email
|
||||
- id
|
||||
- name
|
||||
- prompt_discount
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- updated_at
|
||||
- zip
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
localPresets:
|
||||
- key: ""
|
||||
value: ""
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_update_permission
|
||||
@@ -0,0 +1,47 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: drop_update_permission
|
||||
- args:
|
||||
permission:
|
||||
columns:
|
||||
- due_date
|
||||
- favorite
|
||||
- discount
|
||||
- prompt_discount
|
||||
- city
|
||||
- cost_center
|
||||
- country
|
||||
- display_name
|
||||
- email
|
||||
- name
|
||||
- state
|
||||
- street1
|
||||
- street2
|
||||
- taxid
|
||||
- terms
|
||||
- zip
|
||||
- created_at
|
||||
- updated_at
|
||||
- bodyshopid
|
||||
- id
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
localPresets:
|
||||
- key: ""
|
||||
value: ""
|
||||
set: {}
|
||||
role: user
|
||||
table:
|
||||
name: vendors
|
||||
schema: public
|
||||
type: create_update_permission
|
||||
Reference in New Issue
Block a user