diff --git a/entc/gen/internal/bindata.go b/entc/gen/internal/bindata.go index ca02af60e..cc47d48ac 100644 --- a/entc/gen/internal/bindata.go +++ b/entc/gen/internal/bindata.go @@ -146,7 +146,7 @@ func templateBaseTmpl() (*asset, error) { return a, nil } -var _templateBuilderCreateTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x57\x6f\x6f\xdb\x3c\x0e\x7f\x6d\x7f\x0a\xce\x48\x0f\x76\xd1\x3a\xdd\xde\x5d\x87\x1c\xb0\xb5\xdd\x5d\x81\xbb\xdd\x83\xa7\xed\x30\x60\x1b\x06\xd5\xa6\x13\x21\xb6\xe4\x49\x72\xd6\x22\xf0\x77\x7f\x40\xca\x76\xed\x24\x4f\xf7\xe7\x55\x64\x89\xfc\x89\xfc\x91\x14\x99\xed\x76\x7e\x1c\x5e\xe8\xfa\xd1\xc8\xe5\xca\xc1\xab\xb3\x97\xff\x3c\xad\x0d\x5a\x54\x0e\xde\x89\x0c\xef\xb5\x5e\xc3\xb5\xca\x52\x78\x53\x96\xc0\x42\x16\xe8\xdc\x6c\x30\x4f\xc3\xdb\x95\xb4\x60\x75\x63\x32\x84\x4c\xe7\x08\xd2\x42\x29\x33\x54\x16\x73\x68\x54\x8e\x06\xdc\x0a\xe1\x4d\x2d\xb2\x15\xc2\xab\xf4\xac\x3f\x85\x42\x37\x2a\x0f\xa5\xe2\xf3\xff\x5e\x5f\x5c\xbd\xbf\xb9\x82\x42\x96\x08\xdd\x9e\xd1\xda\x41\x2e\x0d\x66\x4e\x9b\x47\xd0\x05\xb8\xd1\x65\xce\x20\xa6\xe1\xf1\xbc\x6d\xc3\x70\xbb\x85\x1c\x0b\xa9\x10\xa2\xcc\xa0\x70\x18\x41\xdb\xd2\xee\xac\x5e\x2f\xe1\x7c\x01\xf7\xc2\x22\xcc\xd2\x0b\xad\x0a\xb9\x4c\xff\x10\xd9\x5a\x2c\x11\x3a\x55\x87\x55\x5d\x0a\x87\x10\xad\x50\xe4\x68\x22\x98\xed\x1f\xc9\xaa\xd6\xc6\xf5\x47\xfe\x0b\xe2\x30\xd8\x6e\x4f\xc1\x08\xb5\x44\x98\xd5\xc2\xad\xe8\xb2\x59\x7a\x23\xef\x4b\xa9\x96\xd7\x2c\x65\x49\x23\x08\x22\x36\x87\x44\xda\x36\xf2\x7a\xa8\x72\x3a\x4b\xf8\xaa\xd9\x7d\x23\x4b\xa2\x8b\x11\x2e\xd8\x8d\xf7\xa2\xc2\xde\x13\x83\x19\xca\x8d\x3f\x1f\xd6\x83\x52\x27\x54\x35\x4e\x38\xa9\x15\x09\xd5\x46\x2a\x37\xd2\x8b\xd2\xfe\x94\xd9\x09\xe7\x73\x18\x5f\xdb\xb6\x14\x3a\xe2\xbd\xdf\x29\xb4\x01\xa6\x53\xaa\x25\x08\x16\x4e\x3b\x8b\x00\x95\x93\xee\x31\x0d\xdd\x63\x8d\xbb\x30\xd6\x99\x26\x73\xb0\x0d\x83\x8c\xf9\x0e\x83\xc1\xac\xe3\xed\x16\x60\x96\xfe\xaf\xfb\xee\xfd\x0b\x56\x5a\xaf\x2d\x7c\xfa\xf2\x1f\xad\xd7\xa1\xa7\xfe\xbb\x74\x2b\xc0\x07\x47\x24\xcd\x20\x7a\xeb\xf1\xa3\x89\xcb\xc1\x24\x44\x16\x9d\x23\x89\xb4\x63\xa3\xa3\x97\x1c\xbd\x11\x1b\xf4\xbe\xa0\xf7\x71\xe2\x4c\x97\x6f\xb9\x70\x82\x12\x25\x0d\x8b\x46\x65\x10\x4f\x58\x6f\x5b\x36\x7e\x74\x7b\xc2\xa8\x71\xe6\x1e\x20\xd3\xca\xe1\x83\xa3\xfc\xa2\xdf\x04\xe2\xe3\xf1\x05\x27\x80\xc6\x68\x93\x10\x25\xb2\xa0\x0f\x8a\xcf\x0e\x7c\x5a\x1b\x64\xc0\xe4\x35\x4b\xbc\x58\x80\x92\x25\xa9\x04\x06\x5d\x63\x14\x7d\x32\x52\x18\xb4\x61\xb0\x11\x86\xd2\x2f\x20\x51\x46\x0f\x83\x40\x51\xfd\x4d\x6e\x0e\x83\x84\xaf\x2c\x51\xed\xba\x93\x32\xe7\x09\x2c\x16\x70\xc6\xb7\x90\x36\xe3\xc3\xbe\x6d\x8c\x79\xe3\xb4\xf1\x65\xd3\x3b\x9e\x84\x41\x0b\x58\x5a\x64\x00\x32\xa9\x6a\x1c\x70\x74\x35\xc1\xf0\x0a\xdf\x35\x2a\x8b\x89\xd2\x43\x5c\x9d\x40\x05\x7d\x3a\x24\x10\x7f\x10\x65\x83\x63\xbe\x82\x21\x79\x4e\x40\xaf\x89\xb7\x2a\xed\xd8\xdd\xc9\xa2\x84\x84\x65\x01\x2f\xf4\xda\x2b\x4e\x78\x2b\x2a\x97\x5e\x11\x6a\x11\x47\x8d\xc2\x87\x1a\x33\x87\x39\x0c\x99\xc9\x89\x7c\x74\x1b\x9d\x40\xc5\x40\x54\xb2\xc1\xa4\xa4\xda\x16\x16\x83\x3c\x9d\xfe\x1e\x61\x4f\x0e\xa5\xb9\x56\x08\x0b\x70\xa6\xc1\x70\x64\x6e\x0f\x1b\x06\x01\x3b\x45\x75\x28\xc9\xf3\x67\xa2\x78\x0a\x2f\x5f\x83\x84\x7f\x2d\xe0\xec\x35\xc8\xd3\xd3\x81\xba\x03\xb6\xb1\xca\x27\xf9\x25\xae\x1a\x47\xf8\xe4\xaa\x2c\xe0\xeb\x49\x9f\x99\x55\xe3\x3c\xb9\x6c\xf3\x09\xec\xd0\xb0\x9f\xa0\xfb\x19\x4a\xa0\x6d\xb8\xef\xd2\x53\x39\x7e\x84\x4c\x94\xa5\xf5\xa5\x29\x54\x0e\xb5\x50\x32\xb3\x20\x0b\xbf\xe5\x55\x2d\x08\xe5\xb3\xe1\x97\xaa\xf2\xe3\xe1\xb2\x9c\xd4\x06\x59\xbe\x39\xf9\xbb\x6a\x1c\x45\xac\x2b\xd9\x91\xbf\x6c\x6a\x8c\xc6\x24\x63\x2f\x37\xe4\xdd\x4f\x1a\x39\x14\xbb\x77\x8e\x50\xa9\x23\xcc\x0a\x89\x65\x6e\x7d\x0f\x78\xe7\xd7\x6d\xbb\xdd\x12\x2b\xb3\xf4\xfa\x32\xbd\xb3\x68\x2e\xb9\xd5\xe5\xfe\xa0\xd7\x58\x80\xa8\x6b\x7e\x2b\xbb\x0d\x12\xf7\x22\xdd\x3b\x38\x6e\x55\x05\xdf\x50\xf4\x17\x84\x01\x1f\xca\x02\xb4\x81\x59\x91\x5e\x62\x21\x9a\xd2\x41\x4c\x71\x89\x95\x76\xb4\xf9\xff\x9a\xe2\x2f\xca\x04\x62\x45\x10\x9e\x47\xb6\x8a\x56\x49\xe2\x81\xba\x54\xf2\xb5\xba\x93\x39\x5c\x16\xc5\x50\xb8\xff\x46\x07\x6d\x4b\x0f\xde\x53\xcd\x76\x76\x8c\x8c\xf0\xa8\x41\xb0\xe9\x01\x47\xfd\xbb\x03\xec\x44\xbb\xc0\x7a\xba\xbc\x27\xd7\xf6\x56\x56\xe8\x57\x77\x77\xcc\x48\x9c\x8c\x38\x09\xf6\xab\x3c\xbd\x41\xe7\x61\x6f\xb8\x91\x71\x18\x48\x6f\x93\x0c\x16\xf2\x9b\xd7\xeb\x77\xe1\xff\xc7\x07\x51\xca\x9c\x51\xf8\xa1\xd9\x92\x39\xe7\x10\x79\xac\xce\xb6\x88\x13\xee\xdc\x47\xdd\xa6\xef\xf1\x7b\x1c\xf5\x73\x4a\xdb\x9e\x43\x25\xad\xa5\x76\x6b\xf0\x5b\x23\x0d\xe6\xc0\x31\x82\xcf\x53\x94\xcf\x51\x94\xb4\x4f\xc6\x0c\xbe\xf4\x81\x1c\x76\xe8\x83\x1b\xa9\x67\xa3\xb3\x50\x1b\xeb\x19\xb9\x52\x4d\xf5\x14\xb5\xcd\xaf\x46\x6d\x12\xb4\xd9\xbd\xb0\x32\xf3\x79\x95\xbe\xa5\xf5\x2d\x3d\xa9\xd1\x26\xea\x89\x9a\xb6\xbe\xfd\x28\x0e\xd6\x11\x3c\x17\x0c\x23\x1e\x7c\x70\x7e\x8f\xf5\x71\x13\x18\xb3\xbe\x19\x6e\x2e\x84\x2c\x89\x75\x5a\x1e\x66\xfe\x1c\x8e\xbe\x7b\xbc\x2e\x04\x07\x99\xdf\x5d\x77\x75\x87\xbe\xb2\xaf\xf2\x25\x4e\xeb\x8e\x6b\x0c\x87\x1a\xeb\x28\xeb\x8b\x01\xd3\x3b\x25\xbf\x35\x38\x62\xf2\xd9\x12\xc3\x9d\xd4\xbd\xbe\x9c\x14\xd9\x6e\x06\x8f\x06\x84\x1f\x23\xd9\x38\x19\x0d\x0d\x3b\x09\xf8\x33\x51\xc1\xdf\xae\x05\xcc\x97\xd8\x05\x04\xf7\x4a\xe1\xb9\x08\x3c\xb5\xa7\x5f\x1c\x2e\x67\xae\xaa\xcb\x61\x98\x2e\x20\xca\xa5\x28\x31\x73\xf3\x23\x3b\xef\xff\x69\x8c\xfb\x3c\x2b\x3d\x0c\x23\xa9\x57\xdf\x9d\x47\x7d\x2f\x28\xd7\x63\xdc\x23\xeb\x27\xfe\xb7\x4d\xb9\x8e\x20\xae\x85\xcd\x44\xd9\xf5\xaa\x64\xef\x2f\xc0\xf4\x1f\x40\xb9\x9e\xce\xf3\xfc\xfd\x83\x61\x9e\xa5\x74\x71\x60\xa8\x97\x68\x27\x63\xbd\x47\xdb\x9f\xe9\x3b\x60\x9a\xda\xfd\x54\x3f\xa2\x8e\x9d\x9c\x1f\xc3\x75\xc1\x36\xd8\x8e\x9f\xdc\xb0\xc9\xb6\xa9\xfd\xff\x22\x06\xf7\x46\xd1\x7f\x83\x79\xe7\xe6\x0f\x39\xff\x7a\xcf\x2c\x4d\x88\xf7\x8f\xfe\x4a\xd8\xdb\x29\xf9\x6d\x1b\x02\x00\x3c\x1f\xf3\x72\x0d\xd1\x9f\x98\x49\xdc\xf0\xc6\xa8\x73\x73\x52\x1d\x8e\x68\xf0\x14\xd2\x43\xab\xbf\x02\x00\x00\xff\xff\x21\xd2\x5d\x25\x58\x0f\x00\x00") +var _templateBuilderCreateTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x57\xe1\x6f\xdb\xb8\x0e\xff\x6c\xff\x15\x9c\x91\x3e\xd8\x45\xeb\x74\xfb\xf6\x3a\xe4\x01\x5b\xdb\xbd\x15\xb8\xdb\x1d\xae\xed\x30\x60\x1b\x06\xd5\xa6\x13\x21\xb6\xe4\x49\x72\xd6\x22\xf0\xff\x7e\x10\x25\x3b\xb6\x9b\x5b\xdb\xdd\xa7\x28\x96\x48\x91\x3f\xfe\x48\x8a\xdb\xed\xfc\x30\x3c\x93\xf5\xbd\xe2\xcb\x95\x81\x57\x27\x2f\xff\x7b\x5c\x2b\xd4\x28\x0c\xbc\x63\x19\xde\x4a\xb9\x86\x4b\x91\xa5\xf0\xa6\x2c\x81\x0e\x69\xb0\xfb\x6a\x83\x79\x1a\x5e\xaf\xb8\x06\x2d\x1b\x95\x21\x64\x32\x47\xe0\x1a\x4a\x9e\xa1\xd0\x98\x43\x23\x72\x54\x60\x56\x08\x6f\x6a\x96\xad\x10\x5e\xa5\x27\xdd\x2e\x14\xb2\x11\x79\xc8\x05\xed\xff\x76\x79\x76\xf1\xe1\xea\x02\x0a\x5e\x22\xf8\x6f\x4a\x4a\x03\x39\x57\x98\x19\xa9\xee\x41\x16\x60\x06\x97\x19\x85\x98\x86\x87\xf3\xb6\x0d\xc3\xed\x16\x72\x2c\xb8\x40\x88\x32\x85\xcc\x60\x04\x6d\x6b\xbf\xce\xea\xf5\x12\x4e\x17\x70\xcb\x34\xc2\x2c\x3d\x93\xa2\xe0\xcb\xf4\x4f\x96\xad\xd9\x12\xc1\x8b\x1a\xac\xea\x92\x19\x84\x68\x85\x2c\x47\x15\xc1\xec\xe1\x16\xaf\x6a\xa9\x4c\xb7\xe5\xfe\x41\x1c\x06\xdb\xed\x31\x28\x26\x96\x08\xb3\x9a\x99\x95\xbd\x6c\x96\x5e\xf1\xdb\x92\x8b\xe5\x25\x9d\xd2\x56\x22\x08\x22\x32\xc7\x1e\x69\xdb\xc8\xc9\xa1\xc8\xed\x5e\x42\x57\xcd\x6e\x1b\x5e\x5a\xb8\x48\xc3\x19\xb9\xf1\x81\x55\xd8\x79\xa2\x30\x43\xbe\x71\xfb\xfd\xba\x17\xf2\x87\xaa\xc6\x30\xc3\xa5\xb0\x87\x6a\xc5\x85\x19\xc8\x45\x69\xb7\x4b\xe8\x84\xf3\x39\x0c\xaf\x6d\x5b\x1b\x3a\x8b\x7b\xf7\xa5\x90\x0a\x08\x4e\x2e\x96\xc0\xe8\x70\xea\x2d\x02\x14\x86\x9b\xfb\x34\x34\xf7\x35\x4e\xd5\x68\xa3\x9a\xcc\xc0\x36\x0c\x32\xc2\x3b\x0c\x7a\xb3\x0e\xb7\x5b\x80\x59\xfa\xbb\xff\xdf\xf9\x17\xac\xa4\x5c\x6b\xf8\xfc\xf5\xbd\x94\xeb\xd0\x41\xff\x83\x9b\x15\xe0\x9d\xb1\x20\xcd\x20\x7a\xeb\xf4\x47\x23\x97\x83\x51\x88\x34\x1a\x63\x4f\xa4\x1e\x0d\x0f\xaf\x75\xf4\x8a\x6d\xd0\xf9\x82\xce\xc7\x91\x33\x9e\x6f\x39\x33\xcc\x12\x25\x0d\x8b\x46\x64\x10\x8f\x50\x6f\x5b\x32\x7e\x70\x7b\x42\x5a\xe3\xcc\xdc\x41\x26\x85\xc1\x3b\x63\xf9\x65\x7f\x13\x88\x0f\x87\x17\x1c\x01\x2a\x25\x55\x62\x21\xd9\x30\x65\x69\x13\xa0\x52\xee\x6b\x18\x04\xc2\xe6\xcd\x48\x22\x0c\x12\x47\x11\x5e\xc0\x2c\x7d\xcf\xf4\x39\x16\xac\x29\x8d\xa3\xd2\xc4\xb0\x34\x77\x9b\x3a\x4e\x46\xbc\x0a\x78\x01\x25\x8a\xa9\x1f\x29\x81\x9d\xc0\x62\x01\x27\xd6\x22\x7b\xcc\x5a\xb3\x80\xe9\xc1\x6c\x85\xd9\x3a\x4e\x5e\xd3\xf6\x8b\x05\x08\x5e\x92\x40\xa0\xd0\x34\x4a\xd8\xff\xe4\x5a\x18\x04\xad\x77\xe3\xe8\x1f\x54\x91\x73\x57\x46\x2a\x97\x77\x1d\x72\x49\x18\xb4\x80\xa5\x46\xd2\x6b\xb1\xa9\x1a\x03\x44\x0f\x69\xd5\xd0\x0a\xdf\x35\x22\x8b\x6d\x4c\xf6\x81\x7d\x04\x15\x74\x7c\x4a\x20\xfe\xc8\xca\x06\x87\x80\x07\x3d\xfb\x8e\x40\xae\x6d\x62\x54\xa9\x0f\xcf\x84\x86\x89\x3d\xcc\x0b\x78\x21\xd7\x4e\x70\xe4\x67\x51\x99\xf4\xc2\x6a\x2d\xe2\xa8\x11\x78\x57\x63\x66\x30\x87\x9e\xda\x94\x09\x07\xd7\xd1\x11\x54\xa4\xa8\xf5\xda\x9e\x09\xed\x1e\x6c\x9d\xaa\x51\x7a\xb7\x2d\x2c\xfa\xab\xed\xee\xaf\x61\xbf\xc3\x26\xcd\xa5\x40\x58\x80\x51\x0d\x0e\x23\xdc\xa9\xb5\x21\xb6\x02\xb6\x26\x70\x0b\xe2\x4f\x88\x75\x0c\x2f\x5f\x03\x87\xff\x2d\xe0\xe4\x35\xf0\xe3\xe3\x3e\x0a\x7b\x6c\x23\x91\xcf\xfc\x6b\x5c\x35\x26\xf1\x3c\xe2\x05\x7c\x73\xbe\x9c\x92\x93\x2e\x4e\x64\xf3\x11\x4c\x60\x78\x2a\x39\xdb\xf0\xa1\x4b\xbb\xd2\xf0\x09\x32\x56\x96\xda\x95\x09\x26\x72\xa8\x99\xe0\x99\xb6\xd9\x47\x9f\x9c\xa8\x06\x26\x1c\xb1\x9e\x55\x21\x3e\xed\x2f\x11\xa3\x7c\xa7\xca\xd0\xfb\x3c\x05\x69\x10\x31\x4f\xa8\x81\xbf\x64\x6a\x8c\x4a\x25\x43\x2f\x37\xae\x8a\x1e\xc3\xac\xe0\x58\xe6\xda\x75\x95\x77\x6e\xdd\xb6\xdb\xad\xab\x2c\x97\xe7\xe9\x8d\x46\x75\x4e\xcd\x33\x77\x1b\x9d\xc4\x02\x58\x5d\x53\xf5\xf5\x1f\xec\x71\x77\xc4\x17\x98\x4e\xcb\xa4\x3e\xcd\xe7\xd0\x55\x24\xd0\x68\x5c\xc1\xf5\x5f\x60\x63\xf3\x53\xbb\x66\xbe\x6b\x35\xb7\x58\x48\x85\xa0\xd9\x06\xd3\x30\x78\x22\xb8\xbb\xb2\x47\x40\x0c\x3a\x71\x41\xee\x16\x9d\xb7\x2e\x7d\xa8\x98\x4a\x05\xb3\x22\x1d\x55\xd3\x8e\x70\xae\x38\x4c\xf8\x45\xc9\x53\xf4\x95\xe2\xff\x68\x85\x6c\xde\xee\x8a\x44\xb0\xe9\xe4\x06\x0f\x0b\x2f\xe7\x2f\xf2\x51\x76\x78\x39\x13\x2e\xf5\x35\xaf\xd0\xad\x6e\x6e\x08\xd8\x38\xd9\x41\x4b\x8a\xa7\xb6\x5c\xa1\x71\x6a\xaf\xa8\xc3\x52\x34\xad\xdc\x86\x52\x39\xe8\xfd\xec\x75\x0c\xff\x4c\x5b\x22\x55\x20\x50\x8d\xa5\x75\x59\xba\xbf\x9a\xc8\xdf\x68\x54\xc7\xb9\xa7\xc4\x86\x95\x3c\xb7\xd5\x58\x83\x14\xc3\x98\x3d\x39\x07\x7c\xa9\x73\x99\x63\x31\xfb\x69\xa0\x7c\x9c\xac\x1d\xb1\x90\xc6\x7a\xfb\x47\x6d\x01\x60\x65\x02\xb1\x20\xc4\x08\x4e\x22\xaf\x5d\x25\x1e\xaf\x7f\x17\x45\x9f\x37\xff\xf9\xe8\xfc\xe5\x52\x50\xb1\xdf\xda\x1b\x4e\x21\x72\x0a\x7c\x1c\x23\xca\xd4\x53\xe7\x91\x4e\x3f\xe0\x8f\x38\xea\x1e\x9b\x6d\x7b\x0a\x15\xd7\xda\xbe\x99\x14\x7e\x6f\xb8\xc2\x1c\xc8\x41\xf8\x32\xd6\xf2\x25\x8a\x92\xb6\x2b\xef\x0f\xc2\x46\xcf\x1f\x47\x95\x8f\xbb\x10\x10\x5d\x2e\x44\x53\xed\x7c\xde\x3c\xd7\xe7\xde\x65\x2a\x0f\xb7\x4c\xf3\xcc\x45\x21\x7d\x6b\xd7\xd7\xb6\x8f\x45\x9b\x68\x90\x1c\x83\xb2\xf4\x90\xe2\xbd\x75\x56\x3d\xc5\x9e\x34\xee\x2d\xcd\xbf\x06\xf3\xb0\xf3\x0e\x61\xee\xa9\x09\x05\xe3\xa5\x85\xd9\x2e\xf7\x43\x7d\x0a\x07\x3f\x9c\x3e\x87\x79\xb0\x17\xf9\xe9\xda\xb3\x14\x5d\xf5\xbc\xc8\x97\x38\x66\x29\x11\x14\x7b\x82\x8e\x4b\xcd\x0c\xd3\x1b\xc1\xbf\x37\xf8\xd4\x32\x83\x93\xbc\xbe\x3c\x1f\x51\x94\x8c\xb3\x4f\xa5\x9d\xba\xae\x09\x3f\xae\x49\xc7\xc9\xe0\xc5\x37\xa6\xdb\x93\xa2\x82\xbf\x4c\x7e\xcc\x97\xe8\x03\x82\x8f\x72\x7f\xb8\xde\x35\xf2\x67\x8e\x04\x33\x53\xd5\x65\x3f\x02\x15\x10\xe5\x9c\x95\x98\x99\xf9\x81\x9e\x77\xf3\xe1\xf0\x45\x44\x42\x77\xfd\x20\xe1\xc4\xa7\x53\x84\x2b\x6b\xe5\x7a\xa8\xf7\x40\xbb\x39\xed\x6d\x53\xae\x23\x88\x6b\xa6\x33\x56\xfa\xae\x9e\x3c\x18\xdc\xc6\x73\x5b\xb9\x1e\x4f\x61\xf4\xff\x91\x11\x8c\x4e\xc9\x62\xcf\x28\xc6\x51\x8f\x86\x31\xa7\xed\xe1\x24\xe6\x15\xdb\x59\xcb\xcd\x62\x03\xe8\xc8\xc9\xf9\x21\x5c\xba\xde\xac\x3d\x3e\xb9\x22\x93\x75\x53\xbb\x69\x96\x94\x3b\xa3\xec\x44\x37\xf7\x6e\x3e\x8a\xf9\xb7\x5b\x42\x69\x04\xbc\xeb\x88\x2b\xa6\xaf\xc7\xe0\xb7\x6d\x08\x00\xf0\xf3\x98\x97\x6b\x88\xfe\xc2\x8c\xe3\x86\x3e\x0c\x9a\x90\x9b\x91\xf6\x46\x34\x18\x3d\x5f\x1e\xac\xfe\x0e\x00\x00\xff\xff\xfc\x03\x52\x9c\x0e\x11\x00\x00") func templateBuilderCreateTmplBytes() ([]byte, error) { return bindataRead( @@ -161,7 +161,7 @@ func templateBuilderCreateTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "template/builder/create.tmpl", size: 3928, mode: os.FileMode(420), modTime: time.Unix(1, 0)} + info := bindataFileInfo{name: "template/builder/create.tmpl", size: 4366, mode: os.FileMode(420), modTime: time.Unix(1, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -246,7 +246,7 @@ func templateBuilderSetterTmpl() (*asset, error) { return a, nil } -var _templateBuilderUpdateTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x59\x6d\x6f\xdb\xc8\x11\xfe\x4c\xfe\x8a\x09\xa1\x04\xa4\x61\x51\x4e\xbe\xd5\x81\x0a\x5c\x12\xa7\x35\xd0\xe6\x8a\x38\x77\x3d\x34\x31\x82\x15\x39\xb4\xb6\xa6\x76\x99\xe5\x52\xb6\xab\xf2\xbf\x17\xb3\x2f\x14\x29\xd1\x3e\x39\x70\x5b\x1c\x70\x80\x01\x93\xdc\xdd\xd9\x99\x67\xde\x9e\x5d\x6d\x36\xb3\xa3\xf0\xad\xac\xee\x14\xbf\x5a\x6a\x78\x75\xf2\xf2\x0f\xd3\x4a\x61\x8d\x42\xc3\x7b\x96\xe1\x42\xca\x6b\x38\x17\x59\x0a\x3f\x94\x25\x98\x49\x35\xd0\xb8\x5a\x63\x9e\x86\x9f\x96\xbc\x86\x5a\x36\x2a\x43\xc8\x64\x8e\xc0\x6b\x28\x79\x86\xa2\xc6\x1c\x1a\x91\xa3\x02\xbd\x44\xf8\xa1\x62\xd9\x12\xe1\x55\x7a\xe2\x47\xa1\x90\x8d\xc8\x43\x2e\xcc\xf8\x5f\xce\xdf\x9e\x7d\xb8\x38\x83\x82\x97\x08\xee\x9b\x92\x52\x43\xce\x15\x66\x5a\xaa\x3b\x90\x05\xe8\xde\x66\x5a\x21\xa6\xe1\xd1\xac\x6d\xc3\x70\xb3\x81\x1c\x0b\x2e\x10\xa2\xa6\xca\x99\xc6\x08\xda\x96\xbe\x4e\xaa\xeb\x2b\x38\x9d\xc3\x82\xd5\x08\x93\xf4\xad\x14\x05\xbf\x4a\xff\xc6\xb2\x6b\x76\x85\xe0\x96\x6a\x5c\x55\x25\xd3\x08\xd1\x12\x59\x8e\x2a\x82\xc9\xfe\x10\x5f\x55\x52\x69\x3f\x64\xdf\x20\x0e\x83\xcd\x66\x0a\x8a\x89\x2b\x84\x49\xc5\xf4\x92\x36\x9b\xa4\x17\x7c\x51\x72\x71\x75\x6e\x66\xd5\xb4\x22\x08\x22\xa3\x0e\x4d\x69\xdb\xc8\xae\x43\x91\xd3\x58\x12\x9a\xbd\x26\x8b\x86\x97\x84\x97\x11\xf1\x93\xb1\xe3\x03\x5b\xa1\x37\x45\x61\x86\x7c\x6d\xc7\xbb\xe7\x6e\x91\x9b\xb4\x6a\x34\xd3\x5c\x0a\x9a\x54\x29\x2e\x74\x6f\x5d\x94\xfa\x51\x03\x4f\x38\x9b\x41\x7f\xdb\xb6\x25\xdf\x11\xf0\xfe\x4b\x21\x15\x18\x3c\xb9\xb8\x32\x53\x53\xa7\x0f\xa0\xd0\x5c\x73\xac\xd3\x50\xdf\x55\xb8\x2b\xa6\xd6\xaa\xc9\x34\x6c\xc2\x20\x33\x80\x5b\x6b\xb7\x58\x5a\x1f\xcd\x0a\x8e\x65\x5e\x13\xa4\x53\x42\xa8\x52\x98\xf3\x8c\x69\xac\xe1\xf3\x65\xf7\x92\xf6\xf7\x0d\xad\xd6\x7f\x5f\xa2\x42\x60\x79\x5e\x03\x03\x81\x37\xd0\xcd\x36\x2a\xf7\x4c\x48\xc3\xa2\x11\x19\xc4\x7d\xfc\xda\x16\x8e\x86\x0a\x27\x56\x62\x5c\xd5\x90\xa6\xe9\xf8\xd6\xc9\xee\x22\x32\x6f\x28\x36\xed\x59\x30\x07\x56\x55\x28\xf2\xf8\xde\x29\xc7\x50\xd5\x69\x9a\x26\x61\xa0\x50\x37\x4a\xc0\xc0\xc7\xd6\xd6\xcd\x06\x6e\xb8\x5e\x02\xde\x6a\x8a\x95\x09\x44\x6f\xec\xfe\xd1\xc0\xf1\xc1\x20\x52\x6b\xd4\x9a\x66\xa4\x2e\x26\x5c\x94\x7d\x9f\x30\xe7\x2a\xcc\xaf\xb0\xde\x17\x39\x9b\xc1\x05\x5b\x23\xe0\x2d\x66\x0d\x99\x4d\xd0\x7f\x6b\x50\xdd\x01\x13\x39\x58\xc3\xec\x57\xd1\xac\x16\xa8\x28\x89\x95\xbc\xa9\x67\x6b\x54\x9a\x67\x58\xc3\x8a\xe9\x6c\x89\x39\x2c\xee\x6c\x76\xcb\x0a\x95\x89\xd1\x31\xd7\xc1\x98\xef\x48\x83\x38\xd3\xb7\x90\x49\xa1\xf1\x56\x53\x96\xd3\xff\x04\x62\x2e\xf4\x31\xa0\x52\x52\x25\xce\x5d\x3b\x08\x7c\x74\x82\xa3\x7e\x9a\xb8\xf2\x10\xd9\xea\x11\xfd\x03\x95\xfc\x99\x95\x0d\x46\x70\x62\x23\x75\x14\xa2\x9a\xad\xd1\x21\xd4\x25\xb7\x99\xbd\x66\x8a\x0a\x45\x80\x4a\x59\x5d\xc2\x20\x60\x45\x81\x99\xc6\x1c\xb8\xd0\x61\x90\x84\x01\x2f\xa0\x44\xb1\x6b\x6c\xba\x94\xf2\xba\x4e\x60\x3e\x87\x13\x32\xa0\x5b\x67\xac\x82\xf9\x6e\xcc\xd8\x88\xbd\xd0\x52\xd9\xf2\xe6\xa1\x49\xc2\xa0\x05\x2c\x6b\x34\x42\x48\xa1\x55\xa3\xe1\xaf\x54\x0d\x24\x89\x31\x4f\xf8\xbe\x11\x59\x4c\xa0\x8f\xa1\x79\x0c\x2b\x3b\x8d\x4b\x91\x40\x6c\x00\xe9\x63\x1b\x04\xbe\xb8\x1c\x83\xbc\xa6\xf2\xb3\x4a\x63\xe3\xab\xd4\x2f\xf3\x99\x44\x93\x79\x01\xcf\xe4\xb5\x5d\xe8\x13\x40\xf0\xf2\x18\x8a\x95\x4e\xcf\x48\x6a\x11\x47\x8d\xc0\xdb\xca\xe2\xd4\xd5\x35\x53\x6f\x9e\x7f\x8a\x8e\x61\x65\x04\x91\x3b\x82\x41\xe5\x6b\x5b\x98\x77\xf3\x69\xf4\xfb\x41\xdb\x1a\x95\xe6\x52\x20\xcc\x41\xab\x06\xc3\xad\xca\x03\xd1\x61\x10\x18\xe3\xa8\x06\x71\x42\xe0\x01\x8f\x4e\xe1\xe5\x6b\xe0\xf0\xc7\x39\x9c\xbc\x06\x3e\x9d\x76\x10\x8e\xe8\x67\x96\x7c\xe6\x97\xf1\xaa\xd1\x24\x9f\x4c\xe6\x05\x7c\xb5\xf6\x9c\x1a\x63\x2d\xc8\x46\xef\x63\xd8\x81\x23\x79\x6d\x26\x3e\x9b\x13\xc2\x76\x23\xa7\xfe\x49\xa7\x77\x48\x7f\xa3\x46\x6d\xd3\xfc\x17\xdb\xdb\xaf\xd1\xbc\x1d\xc3\xa2\xd1\x50\x31\xc1\xb3\x1a\x78\x01\x4c\xd8\x68\x00\x99\x65\x8d\xaa\x1f\x95\xbe\xbf\x8c\xe7\x2f\xb5\xaf\x4d\xb8\xe3\xbf\xd3\x7d\x80\x7a\x1e\xe3\xc5\xae\xad\x46\xc3\x18\x95\x4a\xc6\x6c\x74\xe6\x9d\xdd\x62\x36\x52\xc5\x0e\x36\x82\xd6\x8f\xdb\x60\x31\xd9\x84\xc1\xd7\x43\xd4\x77\xda\x6d\x71\x27\xc1\x5b\xdc\xe9\xed\xa9\x70\x37\x92\xc7\x75\xde\x74\x38\x8e\x68\xeb\x4d\xdd\x8f\xaa\x21\xd2\x07\x76\x9c\x9d\x6a\xeb\x1a\xd0\x44\xaf\xaa\xb2\xe3\x30\x05\x44\x39\x67\x25\x66\x7a\xf6\xbc\x9e\x79\x86\xd7\xcf\x59\xb3\xe8\xb6\xab\xc9\x76\xf9\x48\x03\x9c\x48\x81\x23\x34\xeb\x47\x31\xce\xb4\xfa\x44\xab\xb7\x72\x97\x6b\x1d\x4c\xb5\x06\x32\x1e\x64\x5b\x0c\x6a\x2e\xae\x4a\x1c\xa1\x5d\x77\x3d\xd2\x35\x14\xf8\x68\xde\xf5\xeb\x2c\x63\x68\xf5\x61\x44\xe3\xbb\x05\x3e\x19\xd9\xb0\x82\xf2\x0e\xaf\x07\x52\x62\x88\xe0\x83\x6c\xe2\xa8\xef\x8b\x27\xe5\x15\x91\xe0\x65\xf4\x54\xdc\x42\xd0\x29\x6c\xa0\xeb\x63\x18\x06\xad\xfe\x9d\x5d\x3c\x82\x5d\x7c\x1f\x60\xbf\xca\x2c\x3a\xb1\xbf\x3d\x56\x61\x90\x1e\xe1\x15\x5b\x93\xfe\x1b\x9c\x62\x90\xc8\x0f\xd2\x8a\x41\x6e\xf8\x63\x5c\xfa\x71\x2b\xf0\x29\x89\xc6\xae\xec\x87\x09\x07\x48\x7b\xf5\xf1\xd8\xc2\xf5\x9b\x61\x20\x23\x5a\xff\x1f\x49\x48\x4f\x9b\xff\x2d\x0f\xd9\x3e\xce\x8e\xa0\x5e\x32\x85\xb9\xef\xde\xb6\x3b\xc3\x02\xf5\x0d\xa2\x8d\x06\x7d\x23\x5d\x4b\x53\x35\x98\x1b\xaf\xbd\x0b\x2f\xdf\xd4\x49\x05\x93\xd9\xf0\xf9\xf2\xcf\x52\x5e\x87\x5d\x9d\x81\xd1\x72\x79\x9f\x32\xa6\x07\x83\xc2\x95\x5c\xb3\xf2\xd1\xca\xb8\x0e\xee\x78\x52\x8f\x70\x55\xac\xce\x58\x09\xe9\x45\x26\x2b\x4c\xdf\x0c\xf9\xd4\x93\x5f\x70\x6d\x36\xfe\x6a\x0e\x2d\xdb\x3b\x33\x56\x79\xdf\x9a\x30\xa5\xef\xd8\xa1\xf2\xb6\x44\x66\x89\x89\x63\x6c\x66\x4e\xdb\x42\x46\x03\x35\x7d\xe2\x05\x2d\xf8\x49\xf0\x6f\x0d\x01\x48\x90\x98\xab\x3d\xf4\x15\x25\x32\xe0\x11\xae\xd4\x12\xdb\x96\x95\xe5\xe8\x8c\xba\x83\x1e\xb4\x84\x8e\xd2\x61\xfa\xe9\xae\xea\xa6\xa6\x61\x70\x20\x9f\xef\x69\x1b\x8f\x5e\x56\xed\xf6\xb1\x74\xb0\x22\x0c\xee\xbb\x87\x0a\x2c\x5c\xbc\x00\x21\xf5\xc0\x76\x27\xb3\x32\x5d\x49\xde\xa0\x82\xd8\xe7\xc9\xf3\xf4\x25\x31\xcc\x9e\x31\x89\x5f\x30\x3b\x22\x59\xe6\x4e\x88\x6c\x94\xf6\xb9\x62\x8a\xad\x50\xa3\xa2\x4a\x50\x94\x3c\xd3\xb5\xcd\x5b\x73\x13\xec\xd5\x31\x2b\x4c\xd0\x05\x4e\x27\xfc\x46\x0a\x0c\xa0\xb1\x3a\xcd\x21\x5a\x47\xee\xd5\x45\xb8\x55\x97\xe7\xf5\x7b\xe7\x79\x1b\x40\xd1\x47\x0a\x73\x8c\x20\x26\xce\xdd\x94\x4c\x75\xbe\xfa\xb7\x8b\xd8\x04\xa2\xf3\x77\x36\xa2\x03\x1f\x1a\x5e\x4e\xdb\xda\x3c\x71\x75\x7c\xe0\x69\xe3\x68\x72\xef\xbe\x67\x61\x71\x07\x3c\xaf\x53\x6a\xed\x87\x7b\x78\xbb\x69\xcc\x73\x73\x5d\xd9\x93\x7c\xfe\xce\xfc\xbf\xef\xb6\x72\x3c\x02\x86\x12\xed\x8d\xe4\xfd\xb1\x10\x78\x14\x8b\x71\x08\x27\x98\x5e\x98\x3a\xf6\x9e\xea\xd1\x00\xaf\x62\x07\xac\x7d\xa0\xea\x71\xa4\x1e\x09\x91\x0f\x69\x1b\x06\x6d\x4b\x20\x1d\xed\x4b\xbd\x07\x22\x42\x95\xc8\x0f\xbb\xc6\xf8\xf3\xe5\x28\xb8\xc7\x1d\x05\x23\xf1\x49\xe2\x91\x35\xec\x2c\xe2\x14\x25\xdb\xd8\xe4\x76\x96\x1d\x9f\x43\xf4\x4f\x37\xdc\x51\x78\xcb\xec\xec\x78\xdb\x9a\xda\x67\x6a\x56\xa7\xbe\x65\xb1\x3c\xaf\x3f\xfb\x49\x97\x8e\xce\xd1\xf0\xf6\x63\x7a\xfe\xae\xa3\xac\xe3\xee\xbb\xdf\xdf\x36\xc5\x5d\x9a\x8c\x3d\x0d\x9a\x43\xd7\xdf\xfc\x6d\x3b\x9d\x4f\x60\x85\x7a\x29\x73\x9f\xcf\xaf\xfc\xb9\xf6\xde\x26\x61\x0f\x35\x66\x68\xda\xfd\x50\xe3\x3a\x83\xff\x85\x66\xea\x87\xff\x85\x4a\xf6\xc6\xbb\xb3\x53\xb7\xbe\xdf\x3c\xdc\xa4\x8e\x75\x75\x52\x0e\x6d\x1e\x53\x6b\x71\xf7\xcb\xce\xd7\x63\x98\x14\xb6\x85\xbc\xb7\xed\x79\xea\x8f\x62\xd4\x0e\x0a\x77\x8d\xf0\x0e\x0b\xd6\x94\xda\xf9\xd5\x92\x69\x7b\x5a\x19\x2d\xbd\x5d\xd7\xf9\x13\x6a\x53\x83\x5f\xdb\x53\xcb\xc6\x09\xfd\xb1\xa2\x41\x56\x52\x10\xbc\x78\x01\xcf\xc6\x85\x0c\xd3\xcd\x34\x30\xcc\xe3\x64\x5b\xf6\x6c\x00\xad\xbd\x1a\xbd\x5f\xbf\x9c\x84\x81\xf2\x2e\x3b\x3a\x25\xce\xeb\x4f\xdc\x7c\x89\x93\x7e\x21\xdd\x2b\x25\x17\xa8\xc7\xf4\x89\xd7\xc3\xf0\x72\xb8\xd9\xd2\x4e\xc7\xf6\x58\x2a\x5a\xf5\x33\x2b\x79\x4e\xe7\xc5\xda\x6e\x7a\x26\x9a\x55\x02\xb1\xe9\x38\x45\x7a\xbe\xa2\xad\x16\x25\x26\x5b\x6c\xd7\x8f\xc5\xd6\x1f\x08\x4d\x24\x2c\x58\xcd\x6d\xf3\x2f\xd2\x37\xf4\x6c\x72\xdb\x76\x0c\x77\x82\xec\x51\xcf\x7d\xcc\x3a\x7d\x7d\xa5\xb1\x02\x47\x8f\x45\xfd\x6c\x34\x71\x4c\x25\xe4\x85\x93\xc0\xa5\x30\x07\xd2\x0d\x01\x7f\x6a\x89\x42\xd1\x11\x05\xc3\xd8\x4f\x07\xc7\xd6\xcd\xc6\x33\xd4\x53\x58\x77\x5a\x14\x8c\x97\x98\x9b\x84\x34\x4c\x10\xbe\x0c\x25\x7d\x89\x4e\xe1\xf9\x8d\x95\x97\xb4\xbe\x4e\x0c\xfd\x32\x78\x1c\xc4\xfe\x18\x7d\x32\xc4\x3f\xef\xf1\x81\xd8\xd1\x03\x1f\xb6\xc9\x81\x79\xb0\xdb\x31\xce\xdf\x91\xb7\x0e\x99\xb9\x0d\x76\x4a\x0f\xef\xdf\x31\xb4\xcd\xf9\xa4\x4e\x3f\xe0\xcd\x10\x40\x43\xeb\xec\x7d\x5b\x63\xad\x30\x0d\xfb\xcb\x90\xaf\x7d\x89\xa2\xfd\x28\xde\x7f\x6c\xdb\xf0\x3f\x01\x00\x00\xff\xff\x0c\x80\x07\xb7\x4d\x1f\x00\x00") +var _templateBuilderUpdateTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x6d\x6f\xdc\xb8\x11\xfe\x2c\xfd\x8a\x89\xb0\x09\x24\xc3\xe6\x26\xf9\x56\x07\x2e\x70\x49\x9c\x9e\x81\x36\x57\xc4\xb9\xeb\x01\x49\x70\xe0\x4a\x23\x2f\x6b\xad\xa8\x90\xd4\xda\xc6\x56\xff\xbd\x18\x52\xd4\xcb\xae\xd6\x59\x1b\xe9\xa1\x57\xf4\x70\x80\x25\x91\x1c\xce\x3c\x33\x9c\x79\x86\x9b\xcd\x66\x7e\x14\xbe\x91\xd5\x9d\x12\x57\x4b\x03\x2f\x9f\xbf\xf8\xd3\x49\xa5\x50\x63\x69\xe0\x1d\x4f\x71\x21\xe5\x35\x5c\x94\x29\x83\x1f\x8a\x02\xec\x24\x0d\x34\xae\xd6\x98\xb1\xf0\xe3\x52\x68\xd0\xb2\x56\x29\x42\x2a\x33\x04\xa1\xa1\x10\x29\x96\x1a\x33\xa8\xcb\x0c\x15\x98\x25\xc2\x0f\x15\x4f\x97\x08\x2f\xd9\x73\x3f\x0a\xb9\xac\xcb\x2c\x14\xa5\x1d\xff\xeb\xc5\x9b\xf3\xf7\x97\xe7\x90\x8b\x02\xa1\xfd\xa6\xa4\x34\x90\x09\x85\xa9\x91\xea\x0e\x64\x0e\x66\xb0\x99\x51\x88\x2c\x3c\x9a\x37\x4d\x18\x6e\x36\x90\x61\x2e\x4a\x84\xa8\xae\x32\x6e\x30\x82\xa6\xa1\xaf\xb3\xea\xfa\x0a\x4e\xcf\x60\xc1\x35\xc2\x8c\xbd\x91\x65\x2e\xae\xd8\xdf\x79\x7a\xcd\xaf\x10\xda\xa5\x06\x57\x55\xc1\x0d\x42\xb4\x44\x9e\xa1\x8a\x60\xb6\x3b\x24\x56\x95\x54\xc6\x0f\xb9\x37\x88\xc3\x60\xb3\x39\x01\xc5\xcb\x2b\x84\x59\xc5\xcd\x92\x36\x9b\xb1\x4b\xb1\x28\x44\x79\x75\x61\x67\x69\x5a\x11\x04\x91\x55\x87\xa6\x34\x4d\xe4\xd6\x61\x99\xd1\x58\x12\xda\xbd\x66\x8b\x5a\x14\x84\x97\x15\xf1\xb3\xb5\xe3\x3d\x5f\xa1\x37\x45\x61\x8a\x62\xed\xc6\xbb\xe7\x6e\x51\x3b\x69\x55\x1b\x6e\x84\x2c\x69\x52\xa5\x44\x69\x06\xeb\x22\xe6\x47\x2d\x3c\xe1\x7c\x0e\xc3\x6d\x9b\x86\x7c\x47\xc0\xfb\x2f\xb9\x54\x60\xf1\x14\xe5\x95\x9d\xca\x5a\x7d\x00\x4b\x23\x8c\x40\xcd\x42\x73\x57\xe1\xb6\x18\x6d\x54\x9d\x1a\xd8\x84\x41\x6a\x01\x77\xd6\xf6\x58\x3a\x1f\xcd\x73\x81\x45\xa6\x09\xd2\x13\x42\xa8\x52\x98\x89\x94\x1b\xd4\xf0\xe9\x4b\xf7\xc2\x86\xfb\x86\x4e\xeb\x7f\x2c\x51\x21\xf0\x2c\xd3\xc0\xa1\xc4\x1b\xe8\x66\x5b\x95\x07\x26\xb0\x30\xaf\xcb\x14\xe2\x21\x7e\x4d\x03\x47\x63\x85\x13\x27\x31\xae\x34\x30\xc6\xa6\xb7\x4e\xb6\x17\x91\x79\x63\xb1\x6c\x60\xc1\x19\xf0\xaa\xc2\x32\x8b\xf7\x4e\x39\x86\x4a\x33\xc6\x92\x30\x50\x68\x6a\x55\xc2\xc8\xc7\xce\xd6\xcd\x06\x6e\x84\x59\x02\xde\x1a\x8a\x95\x19\x44\xaf\xdd\xfe\xd1\xc8\xf1\xc1\x28\x52\x35\x1a\x43\x33\x58\x1b\x13\x6d\x94\x3d\x4e\x58\xeb\x2a\xcc\xae\x50\xef\x8a\x9c\xcf\xe1\x92\xaf\x11\xf0\x16\xd3\x9a\xcc\x26\xe8\xbf\xd6\xa8\xee\x80\x97\x19\x38\xc3\xdc\xd7\xb2\x5e\x2d\x50\xd1\x21\x56\xf2\x46\xcf\xd7\xa8\x8c\x48\x51\xc3\x8a\x9b\x74\x89\x19\x2c\xee\xdc\xe9\x96\x15\x2a\x1b\xa3\x53\xae\x83\x29\xdf\x91\x06\x71\x6a\x6e\x21\x95\xa5\xc1\x5b\x43\xa7\x9c\xfe\x26\x10\x8b\xd2\x1c\x03\x2a\x25\x55\x42\xee\x5a\x73\x45\x47\x36\x40\xa5\xdc\xd7\x30\x08\x78\x9e\x63\x6a\x30\x03\x51\x9a\x30\x48\x5c\xa8\x8a\x1c\x66\xec\x47\xae\xdd\x21\x7c\x8b\x39\xaf\x0b\xe3\x8e\xf1\x96\x3a\x2c\x73\x83\x3a\x4e\x46\x67\x3a\x10\x39\x14\x58\x6e\x6b\xcf\x96\x52\x5e\xeb\x04\xce\xce\xe0\x39\x69\x34\xb1\xdb\x9b\x25\xa6\xd7\xa8\xda\xac\x41\x72\x48\xdd\xb3\xed\xf0\x60\x29\xcd\x8b\x93\x57\x76\xf8\xc9\x19\x94\xa2\xb0\x12\x03\x1f\x4f\xcf\xad\xe9\xf4\xa5\x69\x37\xf2\xba\x75\x46\x1f\xef\x91\x6d\x03\xff\xd2\x48\xe5\xb2\xa4\x47\x38\x09\x83\x06\xb0\xd0\x68\x37\x22\x34\x57\xb5\x81\xbf\x51\x52\x91\x24\xc6\x3e\xe1\xbb\xba\x4c\x63\xf2\xdd\x94\x53\x8e\x61\xe5\xa6\x09\x59\x26\x10\xff\xc2\x8b\x1a\x87\x2e\x0a\x02\x9f\xa3\x8e\x41\x5e\x53\x16\x5b\xb1\xd8\xba\x9c\xf9\x65\xfe\x40\xb6\xe8\x3c\x91\xd7\x63\xbb\x4b\x51\x1c\x43\xbe\x32\xec\x9c\xa4\xe6\x71\x54\x97\x78\x5b\x39\x27\x77\xe9\xd1\xa6\xad\xa7\x1f\xa3\x63\x58\x25\x1e\xa2\x6f\x3b\xe3\x31\xde\xd8\x75\x47\xbf\x59\xe7\x90\x60\x94\xbb\x9b\x06\xce\x3a\x55\x69\xf4\xf1\xfe\xea\xf1\x64\x99\x2c\x11\xce\xc0\xa8\x1a\xc3\x5e\xad\x91\xe8\x30\x08\x2c\xae\x94\x45\x05\x81\x7f\x4f\x08\x9f\xc0\x8b\x57\x20\xe0\xcf\x67\xf0\xfc\x15\x88\x93\x93\xce\x7b\x13\xfa\xd9\x25\x9f\xc4\x97\x78\x55\x1b\x92\x4f\x26\x8b\x1c\x7e\x73\xf6\x9c\x5a\x63\x9d\x7f\xad\xde\xc7\xb0\x05\xc7\x04\xae\xdb\xa8\x36\x21\xfd\x3f\x69\x54\x9f\xa8\x7e\x75\xec\xe4\x1a\xed\xdb\x31\x2c\x6a\x03\x15\x2f\x45\xaa\xc9\xef\xbc\x74\x81\x08\x32\x4d\x6b\xa5\x1f\x94\x80\x7e\x9d\xce\x40\x54\x80\x37\xe1\x96\xff\x4e\x77\x01\x1a\x78\xac\x0d\xb1\x81\xad\x56\xc3\x18\x95\x4a\xa6\x6c\x6c\xcd\x3b\xbf\xc5\x74\x22\x0f\x1f\x6c\x04\xad\x9f\xb6\xc1\x61\xb2\x09\x83\xdf\x0e\x51\xbf\xd5\xae\xc7\x9d\x04\xf7\xb8\xd3\xdb\xf7\xc2\xdd\x4a\x9e\xd6\x79\xd3\xe1\x38\xa1\xad\x37\x75\x37\xaa\xc6\x48\x4f\xd6\xcc\x0f\xad\xa0\x68\x48\xac\x5a\x42\x19\x39\xbe\xf9\x80\xba\x6a\xd3\xc6\x44\x61\x3d\xa4\x56\x6f\xed\xda\x6e\x31\x33\xab\xaa\xe8\xd8\x5f\x0e\x51\x26\x78\x81\xa9\x99\x3f\xd5\x73\xcf\x8d\x87\xb9\xc2\x2e\xba\xed\x14\x73\xcb\x27\xd4\x99\xc9\x12\x27\x08\xea\x4f\xe5\x34\x47\x1d\x52\xd4\xc1\xca\x6d\x96\x7a\x30\x49\x1d\xc9\xb8\x97\xa7\x72\xd0\xa2\xbc\x2a\x70\x82\xb0\xde\x0d\xe8\xea\x58\xe0\x83\x19\xeb\xb7\xf9\xd9\xd8\xea\xc3\x28\xda\xa3\x05\x7e\x37\x9a\xe6\x04\x65\x1d\x5e\xf7\x1c\xc5\x31\x82\xf7\xf2\xb0\xa3\xa1\x2f\xbe\xc5\xc8\x4a\xea\x22\x47\x2b\xfe\xb7\x78\x99\xe5\x27\xfb\x98\x19\x19\xff\x7f\x56\xf6\xfb\xb1\xb2\xa1\x33\x1e\xce\xcb\x1e\xe7\xad\x6f\x72\xb2\x4e\xec\x1f\x8f\x8f\x0d\xf0\x1c\x31\xb2\xde\xa4\xff\x04\x1b\x1b\xa5\xa2\x7b\x09\xd9\x28\xaf\xf8\x16\x9e\x7d\xe8\x05\x7e\x4f\x8a\xb6\x2d\xfb\x7e\xaa\x06\xd2\x5d\x7b\x3d\x34\xf5\xfe\x61\xb8\xdb\x84\xd6\xff\xe5\xf4\xed\x80\x92\xfb\x18\x06\x37\x10\xfb\xfb\x92\xb8\xfe\x71\x7e\x04\x7a\xc9\x15\x66\x9e\xfa\x38\x6a\x03\x0b\x34\x37\x88\x2e\x10\xcd\x8d\x6c\xf9\x80\xd2\x60\x2f\x5a\x77\xee\x59\x3d\x23\x22\x15\x6c\x52\x81\x4f\x5f\x7e\x94\xf2\x3a\xec\x52\x1c\x4c\x96\x89\x7d\xca\x58\x02\x03\x0a\x57\x72\xcd\x8b\x07\x2b\xd3\xd2\x9f\x96\x64\x0e\xd8\x6a\xc5\x75\xca\x0b\x60\x97\xa9\xac\x90\xbd\x1e\x93\xd1\xef\x7e\xaf\xba\xd9\xf8\x1b\x61\x74\x54\xf9\xdc\x5a\xe5\x7d\x6b\x4f\x08\x7d\xc7\x0e\x95\x37\x05\x72\x17\x62\x2d\xdd\xb5\x73\x9a\x06\x52\x1a\xd0\xf4\x89\x2a\x20\xb2\x9f\x4b\xf1\xb5\x26\x00\x09\x12\x7b\xa3\x8c\x3e\x99\x45\x16\x3c\xc2\x95\xa8\x40\xd3\xf0\xa2\x98\x9c\xa1\x3b\xe8\xc1\x48\xe8\xf8\x30\xb2\x8f\x77\x55\x37\x95\x85\xc1\x81\x4d\xd8\x40\xdb\x78\xf2\x8e\x74\xbb\x84\xb2\xd1\x8a\x30\xd8\x77\xfd\x19\x38\xb8\x44\x0e\xa5\x34\x23\xdb\x5b\x99\x95\x2d\x88\xf2\x06\x15\xc4\xfe\x9c\x3c\x65\x2f\x88\x9e\x0f\x8c\x49\xfc\x82\xf9\x11\xc9\xb2\x57\x91\x64\xa3\x74\xcf\x15\x57\x7c\x85\x06\x15\x25\xa1\xbc\x10\xa9\xd1\xee\xdc\xda\x1f\x20\xbc\x3a\x76\x85\x0d\xba\xa0\xd5\x09\xbf\x92\x02\x23\x68\x9c\x4e\x67\x10\xad\xa3\xf6\xb5\xa3\x11\x34\x24\x32\xfd\xae\xf5\xbc\x0b\xa0\xe8\x03\x85\x39\x46\x10\x53\xc3\x52\x17\x5c\x75\xbe\xfa\x57\x1b\xb1\x09\x44\x17\x6f\x5d\x44\x07\x3e\x34\xbc\x9c\xa6\x71\xe7\xa4\x2d\x21\x23\x4f\x5b\x47\x93\x7b\x77\x3d\x0b\x8b\x3b\x10\x99\x66\xc4\x2a\x0e\xf7\x70\xbf\x69\x2c\x32\x7b\x4b\x3e\x90\x7c\xf1\xd6\xfe\xdd\x77\x49\x3e\x1d\x01\x63\x89\xee\x22\x7c\x7f\x2c\x04\x1e\xc5\x7c\x1a\xc2\x19\xb2\x4b\x9b\xc7\xde\x51\x3e\x1a\xe1\x95\x6f\x81\xb5\x0b\x94\x9e\x46\xea\x81\x10\xf9\x90\x76\x61\xd0\x34\x04\xd2\xd1\xae\xd4\x3d\x10\x11\xaa\xc4\xbb\xf8\x35\xc6\x9f\xbe\x4c\x82\x7b\xdc\xb1\x3f\x12\x9f\x24\x1e\x59\x4b\x0c\x23\x41\x51\xd2\xc7\xa6\x70\xb3\xdc\xf8\x19\x44\xff\x6c\x87\x29\x24\x4f\x1c\xb5\x25\x52\xe9\xc6\x9b\xc6\xe6\x3e\x9b\xb3\x3a\xf5\x1d\x4f\x16\x99\xfe\xe4\x27\x7d\x69\x99\x24\x0d\xf7\x1f\xd9\xc5\xdb\x8e\xaa\x4f\xbb\x6f\xbf\xbf\xdd\x11\x6f\x8f\xc9\xd4\xd3\xa8\x38\x74\xf5\xcd\xff\xc8\xf3\xb2\xad\x08\xfe\x22\x60\x6f\x61\xf0\x45\x7a\xfc\xa3\x60\x5b\x0e\x06\xbf\x06\x6e\x97\x83\x76\xc6\x90\xc2\x3d\xa4\xb2\x3c\xb0\x68\xec\xef\x6e\xe7\x73\xf0\xfd\x2c\x68\x34\xee\xc4\xb7\x5f\x60\x4d\xdd\x9a\xf6\x09\xcd\xeb\xb6\xc0\x5c\x2a\x04\xcd\xd7\x78\x78\x32\xef\x9b\xe6\xae\x09\x6e\x2b\x59\xee\x2a\xd9\x3b\xc7\x12\x9a\x51\x63\x96\xb3\x89\x7e\xdc\x37\x14\xae\x5d\x9c\xac\x01\x5d\xf9\xfb\x0b\x1a\x5b\x0c\x5e\xb9\xb6\x71\xd3\x4a\xfd\xa9\xa2\x41\x5e\x90\xaa\xcf\x9e\xc1\x93\x69\x21\xe3\x73\x6f\x2b\x29\x66\x71\xd2\xe7\x5f\xdf\xf1\xad\xbd\x22\x03\x8f\xb7\x32\x46\xfa\xb7\x07\xb5\x53\xe3\x42\x7f\x14\xf6\x4b\x9c\x0c\x73\xfa\x44\x5e\xbb\x44\x33\xa5\x53\xbc\x4e\xf6\xb4\x97\xc3\x97\x6d\xae\x76\x4f\xcb\x3b\x9f\x83\x8d\x68\x50\x75\xa9\x81\x0a\xbd\x0b\x70\x7b\x9b\x53\x6b\x54\x27\x2e\xfe\x33\x8a\x0d\x91\x71\x23\x95\xf6\xdd\x45\xf7\xc3\xe8\xa1\x31\xd1\xf6\xd0\x7d\x2b\x71\x7f\x58\x40\xfb\x1f\x4d\xb2\x85\x94\x74\x8a\xa5\x22\x58\x7e\xe9\xb5\xb1\xb8\x9e\x97\xf5\x2a\x81\xd8\xd6\xf7\x9c\x5d\xac\x08\xcb\x45\xe1\x4b\xb6\x8d\xa0\xf5\x43\x23\xa8\xbb\x77\xb0\x6a\xce\x16\x5c\x0b\xc7\xb6\x72\xf6\x9a\x9e\x6d\x32\x75\x25\xda\x4d\x1b\x37\x1a\xbb\xb1\xd1\x29\xed\x93\xbb\x13\x39\xd9\x04\xf7\x29\xf0\x59\xbb\x4c\xc8\xd2\x5e\x78\x6c\x28\xaa\x4e\x1d\x21\xcb\x3b\x42\x66\x9b\xb2\xd3\xd1\xb5\x88\xcf\x4f\x4d\x73\xda\x7b\x0f\x72\x2e\x0a\xcc\x6c\xe2\xb3\x8c\x1b\x3e\x8f\x25\x7d\x8e\x4e\xe1\xe9\x8d\x93\x97\xb4\x86\x35\x07\x04\xdd\xd0\x97\x3b\x64\xb5\x3b\xe1\xe4\xc2\x9e\x80\xc5\x2d\x1f\xf3\xc7\x33\x39\xf4\xc0\x6f\xd7\xe8\x8b\xb7\xe4\xb0\x43\x66\xf6\xa7\x9a\xf2\x40\xef\xe2\xbe\x61\x95\x4a\xb3\xf7\x78\x33\xc6\xcf\xb2\x67\x77\x27\xac\xf0\x6b\x2d\x94\xfd\x27\x29\xd6\x08\x4b\x90\x3e\x8f\xf9\xf1\xe7\x28\x3a\xe4\xa0\x0e\xae\x3a\x76\x4f\xad\x7b\xfc\x77\x00\x00\x00\xff\xff\x32\x73\x1b\xd9\x54\x23\x00\x00") func templateBuilderUpdateTmplBytes() ([]byte, error) { return bindataRead( @@ -261,7 +261,7 @@ func templateBuilderUpdateTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "template/builder/update.tmpl", size: 8013, mode: os.FileMode(420), modTime: time.Unix(1, 0)} + info := bindataFileInfo{name: "template/builder/update.tmpl", size: 9044, mode: os.FileMode(420), modTime: time.Unix(1, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -606,7 +606,7 @@ func templateDialectSqlByTmpl() (*asset, error) { return a, nil } -var _templateDialectSqlCreateTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x58\x7b\x6f\xdb\xc8\x11\xff\x9b\xfc\x14\x73\x82\x1b\x90\xae\x4c\xd9\x41\x51\xa0\x76\x75\xc0\x9d\xe5\x14\x02\x2e\x46\x5b\x3b\x41\x50\x43\x08\x56\xe4\x50\x5a\x98\xda\x65\x76\x97\xae\x0d\x81\xdf\xbd\x98\x59\x92\xa2\x1e\x96\xdd\xd7\x3f\x31\xb5\x3b\xef\xf9\xcd\x63\xb3\x5e\x8f\x4e\xc3\x6b\x5d\xbe\x18\xb9\x58\x3a\xf8\x78\x7e\xf1\xa7\xb3\xd2\xa0\x45\xe5\xe0\x93\x48\x71\xae\xf5\x23\x4c\x55\x9a\xc0\x2f\x45\x01\x4c\x64\x81\xee\xcd\x13\x66\x49\x78\xbf\x94\x16\xac\xae\x4c\x8a\x90\xea\x0c\x41\x5a\x28\x64\x8a\xca\x62\x06\x95\xca\xd0\x80\x5b\x22\xfc\x52\x8a\x74\x89\xf0\x31\x39\x6f\x6f\x21\xd7\x95\xca\x42\xa9\xf8\xfe\xb7\xe9\xf5\xcd\xed\xdd\x0d\xe4\xb2\x40\x68\xce\x8c\xd6\x0e\x32\x69\x30\x75\xda\xbc\x80\xce\xc1\xf5\x94\x39\x83\x98\x84\xa7\xa3\xba\x0e\xc3\xf5\x1a\x32\xcc\xa5\x42\x18\x64\x52\x14\x98\xba\x91\xfd\x51\x8c\x52\x83\xc2\xe1\x00\xea\x9a\x28\x4e\xe6\x95\x2c\xc8\x9e\xcb\x31\x94\xc2\xa6\xa2\x80\x93\xe4\x2e\xd5\x25\x26\xbf\x36\x37\x0d\xa1\xc1\x14\xe5\x93\xa7\xec\xbe\x3b\xf6\x86\x68\x55\x39\xe1\xa4\x56\x2c\xce\x48\xe5\x7a\x7c\x83\xa4\xbd\x1d\x00\xd1\x87\x79\xa5\x52\x88\xb6\x64\xd7\x35\x9c\xf6\xad\xaa\xeb\x18\xec\x8f\xe2\x4e\x3c\x61\x94\xba\x67\x48\xb5\x72\xf8\xec\x92\x6b\xff\x37\x86\x88\xc9\x93\x5b\xb1\x42\xa8\xeb\x21\xa0\x31\xda\xc4\xb0\x0e\x03\x3e\xff\xfb\x46\xf0\x10\xbe\xdb\x12\x53\xb2\x6c\x47\x65\xe2\x43\x72\x57\x62\x1a\xc5\x61\x20\x73\x92\x42\x74\xf6\x47\xb1\x30\xa2\x5c\x26\xd7\x4c\x70\xab\x33\xb6\x62\xb8\x27\x20\x33\xf4\xd5\x68\x88\xaf\x98\xff\xa7\x31\x28\x59\x90\x25\x24\x31\x45\x63\x86\xa0\x1f\x49\xac\xb4\x77\x7f\xfb\xed\x5a\x2b\xeb\x8c\x90\xca\xdd\x90\xc9\x11\x1a\x13\x5f\x11\x01\x31\x04\x24\x60\xcc\x4c\x61\x10\xd4\x61\x10\x18\x74\x95\x51\x24\x91\x7d\x0c\xe9\x70\xbd\x3e\x03\x99\x83\x50\x19\x9c\x24\xd3\x49\xf2\xc5\xa2\x99\x70\xc6\x33\x88\xb4\xf1\x87\x53\x7b\xe7\x8c\x54\x8b\xf6\xd7\x97\x2f\xd3\x49\x4c\xe1\x0f\x98\x7f\x74\x0a\x13\x0d\x4a\xbb\xa5\x54\x8b\x21\xcc\x31\x15\x95\x45\x42\x9a\x45\xf8\x08\xee\xa5\x44\x0b\xab\xca\x3a\x98\x23\xd8\xaa\x2c\x0b\x89\x19\xcc\x5f\x18\x8b\x95\x45\x93\xc0\xe9\x08\xce\xea\xc6\x1c\x2c\x2c\x6e\x84\xcb\x7c\xdf\x30\xbe\xa4\x88\xec\xe6\x27\x99\x4e\x60\x3c\x86\x73\x0e\x00\xcb\x52\x1d\x75\x46\x61\xe3\xe0\x92\xb8\xaf\xa2\xa8\x30\x89\xa4\x72\x7f\xfc\x43\x4c\xf7\x07\x45\x79\x05\xd3\x49\x72\xff\x52\x92\x4d\x91\xcc\xe2\x37\xed\xaa\x77\x74\xf7\xbf\x9b\x14\xec\xe3\x4a\xc9\x22\x7c\x3f\x9c\xfb\x60\xdb\x83\xef\xe9\x0e\xe4\x88\x8c\xd1\xfc\x24\x0c\x44\xe1\xbe\xab\x30\x86\x0f\x7d\x11\xeb\x54\xab\x5c\x2e\x2e\xf7\x31\xce\xe7\xe4\x9f\x2f\x83\x31\x7c\x38\xa0\x8b\xc1\x77\x2f\xe6\x05\x7a\x09\xc9\x5f\x45\xfa\x28\x16\x24\x39\xe1\xe3\x21\x11\x4c\x27\x97\x3d\xee\x4f\x12\x8b\xac\x63\x0e\x28\xdc\x97\x90\xd3\x61\xd2\x4f\x41\xc2\x88\x6f\x3d\x65\xd2\x6b\x5d\x54\x2b\xb5\xaf\xa9\x65\x63\x0e\xa1\x5c\xcb\xc0\xff\xd6\x61\x10\x87\xc7\xd3\x28\x73\x90\x59\x5b\x6d\x5b\x6d\xa9\x27\xfc\x73\x73\xf6\x17\x24\xf9\x51\xaf\xf8\x0e\xc3\x49\x66\x74\xb7\x0d\xc2\xf6\x78\x07\x29\xf4\x6d\x84\x5a\x20\x9c\xe4\x64\xc2\x89\x8f\x91\xed\xac\x7b\x22\xe6\x63\x06\xe6\x47\xcc\xf3\x26\x34\x12\xc7\x20\xca\x12\x55\x16\xf5\x4f\x87\xef\xcf\x4e\xfe\x5a\x6e\xd8\xbf\xcb\xc6\xd2\x37\xb3\x95\xef\xe7\xea\x70\x65\x7a\xe2\x3b\x67\xaa\xd4\xb1\x69\x1e\xc3\xeb\x35\x67\x33\x4f\x6e\x65\x51\x10\xce\xa0\xae\x09\xd7\x3e\xa2\x6c\xc4\xd1\x30\xa3\x0f\xf3\x4d\xb6\xc0\x4d\x94\x95\xce\xd0\xbe\x16\x61\xdc\x31\x62\x3a\xb1\x14\xe4\x02\x55\xc4\x7c\x31\xfc\xdc\xf4\x22\xd6\xf3\x4f\xe9\x96\x80\xcf\x8e\x74\x9f\xc0\x80\x14\x0d\x48\xed\x80\x86\x82\x1d\x80\x33\x15\xc2\xe0\x1f\x68\xf4\x00\x06\x4a\x16\x83\xa6\xa1\x50\x04\x1c\xae\xca\x42\xb8\x9d\x39\x9c\x61\x8e\x2c\x25\xa1\xb2\x5d\x8f\x4e\x9b\x69\x9d\xd1\xa4\x27\x82\xaa\xcc\x84\xc3\xc4\xad\xca\x02\x78\xa2\x07\xbb\x7d\xd1\xe7\xdc\x3b\xbd\x03\x04\x3e\x1c\x02\x69\x88\xf7\x23\xf7\x6a\x2b\x63\xe6\xd0\x2f\x0f\x0d\xf1\xf1\x3d\xe2\xfb\xbc\x2a\x1e\xff\x0f\xcb\x44\x38\x1a\x01\x4d\xfd\xa6\x5d\x5a\x9e\x37\xfd\x46\x07\xa8\x9c\x74\x12\x6d\xbb\x18\x65\xc2\x89\xb9\xb0\x98\xbc\xb7\x11\x1f\x59\x2a\x1e\x66\xaf\xae\x15\x14\x20\x06\xd5\x4a\x3c\x22\x11\x1e\xe8\xa2\x43\x86\xd1\x6e\x07\x6e\x74\xdb\x38\x0e\x83\x0e\x9a\xad\x94\x6d\x75\x6f\xb1\x33\x98\xb5\xe9\x4b\xf8\xec\x8f\xde\xe6\xcd\xb5\x01\xc9\x71\xe7\xd2\x79\x8d\x94\xa1\x4f\x91\x8c\x24\x48\xe5\x86\x7e\xf1\xdc\x0b\x15\x17\x48\x2f\xed\xaf\x89\x7b\x90\x33\xa2\xa4\x31\xb6\xaa\x1c\x34\xd6\xc2\xd8\x7f\xe1\x27\x52\xc4\xda\x0e\x24\x64\x08\x2b\x68\xdb\x61\x0c\xd1\x57\xdf\x3c\x37\x29\xf1\xfb\x44\xb3\xb3\x35\x0a\x93\xd2\x20\x27\x78\x7f\x1b\x0b\x0e\x6c\x53\xcd\xe8\x0f\x82\xb6\x4d\xb4\xcd\x79\x95\x34\x23\xba\x35\xa0\xc9\x51\xdc\xaa\xfd\xa9\x6d\xcb\xdb\x52\xf3\x95\x4b\x78\xb1\xcb\xa3\x41\xa5\xf0\xb9\xc4\xd4\x61\x06\x5d\x17\xa2\xc5\x0a\x7e\x77\x3f\x18\xc2\x2a\xee\xa9\x6f\xad\xef\xe8\xc6\x1d\x0b\xdf\x33\x6e\x1e\xe4\x6c\x08\x8c\xc3\x07\x39\x83\x8d\xcb\xdb\x6b\x6c\x13\x6d\x72\x9e\x43\xd5\x1a\x2c\xe1\xcf\x8c\x91\x16\x43\xf1\xd9\x45\xeb\xc0\x77\x8e\x46\xab\x53\x53\xd6\x7e\x7f\x31\xf3\xae\x63\x44\x00\xd8\x5f\x7d\x37\x09\x26\xd2\xd6\xd8\xc6\x27\xbf\x0f\x36\xd2\x47\x23\x98\xaa\x27\xfd\xc8\xdb\x25\x88\xd4\x55\xa2\x00\x5d\xa2\xf1\x9e\x6a\x5f\xc6\xd4\x28\xad\xdb\x04\xaa\xa9\xee\x74\x29\xa4\x4a\xbc\xa0\x26\xd9\xbd\xfd\xfc\x57\xe1\xd2\xa5\xaf\xbf\xe3\x0b\xfa\x87\x43\x2c\x3c\x1d\xb9\x8f\x5f\xfa\xb0\xd6\x07\x41\xf3\x1f\xac\xf1\xc1\xee\x2a\xbf\xc9\x74\xf3\x67\x1b\x75\x49\xa6\x15\x2d\x15\x34\x4d\xfa\xb8\x7e\x2f\x7a\xff\xdb\x17\x41\xf0\x3f\x7f\x14\xb4\x33\xab\x7b\x17\x04\x6f\xad\xe0\xc1\x66\x76\x3f\xc8\xd9\xd6\xab\x60\x6f\x00\x76\x6f\x83\xb6\x1a\x0e\x3e\x0f\x7a\x75\x73\xec\x65\xf0\x1e\xcb\xea\x83\x56\xec\xfc\x6c\xf3\xd3\xd5\x2a\x3d\x10\xba\x95\xa8\xeb\xbf\x54\x84\x6d\xe9\x2e\xb5\x7e\xb4\x31\x9c\xc1\xc5\x15\x48\xf8\x79\x0c\xe7\x57\x20\xcf\xce\x1a\xaf\xa9\x63\x6e\xca\x9c\x69\x1f\xe4\x8c\x2a\x38\x6e\x1f\x2d\xc1\xa6\x64\x67\xbe\x80\x69\xea\x47\x72\x08\xa9\x7b\x8e\xf9\xb9\x28\xf3\xed\xba\xef\x16\x1c\x99\x43\x53\xf9\x97\xbd\xd2\x3f\xef\x0a\xff\x60\x45\x75\x75\x7f\xde\xab\xfa\xfd\xb2\xd9\xc7\x6a\xcd\xc6\xf4\x63\xd4\xbd\xa0\x9a\x99\xff\x0d\x52\x51\x14\xd6\xcf\x7f\xc2\x72\x29\x94\x4c\x2d\x65\x86\x8f\x3c\xaf\x05\xa1\x7c\x67\xfb\xb7\x26\xfe\xb7\xc3\x23\x7f\x67\x04\xf3\x93\xab\x8b\xc9\xae\xef\xed\xe6\xb0\xf9\xcf\x82\x9e\xcb\x6c\x2c\xf7\x81\xbe\xa3\x4f\x61\xdd\xdb\xa9\xfe\x15\x00\x00\xff\xff\x4e\x0c\xc1\x7b\x5f\x12\x00\x00") +var _templateDialectSqlCreateTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x58\x6d\x6f\xdb\xc8\x11\xfe\x4c\xfe\x8a\x39\xc1\x0d\x48\x57\xa6\x9c\xa0\x28\x50\xa7\x3a\xe0\xce\x4a\x5a\x01\x77\x41\x5b\x27\x87\x43\x0d\x21\x58\x91\x43\x69\x21\x6a\x97\xd9\x5d\xba\x36\x04\xfe\xf7\x62\x66\x49\x8a\x12\x65\xd9\x7d\xb9\x2f\x31\xb5\x3b\x6f\x3b\xf3\xcc\xec\xb3\xd9\xed\x26\x97\xe1\xad\x2e\x9f\x8c\x5c\xad\x1d\xbc\xbb\x7e\xfb\xa7\xab\xd2\xa0\x45\xe5\xe0\xa3\x48\x71\xa9\xf5\x06\xe6\x2a\x4d\xe0\x87\xa2\x00\x16\xb2\x40\xfb\xe6\x01\xb3\x24\xfc\xbc\x96\x16\xac\xae\x4c\x8a\x90\xea\x0c\x41\x5a\x28\x64\x8a\xca\x62\x06\x95\xca\xd0\x80\x5b\x23\xfc\x50\x8a\x74\x8d\xf0\x2e\xb9\x6e\x77\x21\xd7\x95\xca\x42\xa9\x78\xff\xa7\xf9\xed\x87\x4f\x77\x1f\x20\x97\x05\x42\xb3\x66\xb4\x76\x90\x49\x83\xa9\xd3\xe6\x09\x74\x0e\xae\xe7\xcc\x19\xc4\x24\xbc\x9c\xd4\x75\x18\xee\x76\x90\x61\x2e\x15\xc2\x28\x93\xa2\xc0\xd4\x4d\xec\xb7\x62\x92\x1a\x14\x0e\x47\x50\xd7\x24\x71\xb1\xac\x64\x41\xf1\xdc\x4c\xa1\x14\x36\x15\x05\x5c\x24\x77\xa9\x2e\x31\xf9\xb1\xd9\x69\x04\x0d\xa6\x28\x1f\xbc\x64\xf7\xdd\xa9\x37\x42\xdb\xca\x09\x27\xb5\x62\x73\x46\x2a\xd7\xd3\x1b\x25\xed\xee\x08\x48\x3e\xcc\x2b\x95\x42\x74\x60\xbb\xae\xe1\xb2\x1f\x55\x5d\xc7\x60\xbf\x15\x77\xe2\x01\xa3\xd4\x3d\x42\xaa\x95\xc3\x47\x97\xdc\xfa\xbf\x31\x44\x2c\x9e\x7c\x12\x5b\x84\xba\x1e\x03\x1a\xa3\x4d\x0c\xbb\x30\xe0\xf5\x7f\xec\x0d\x8f\xe1\xab\x2d\x31\xa5\xc8\x8e\x5c\x26\x3e\x25\x77\x25\xa6\x51\x1c\x06\x32\x27\x2b\x24\x67\xbf\x15\x2b\x23\xca\x75\x72\xcb\x02\x9f\x74\xc6\x51\x8c\x07\x06\x32\x43\x5f\x8d\x87\xf8\x3d\xeb\x7f\x37\x05\x25\x0b\x8a\x84\x2c\xa6\x68\xcc\x18\xf4\x86\xcc\x4a\x7b\xf7\xf7\x9f\x6e\xb5\xb2\xce\x08\xa9\xdc\x07\x0a\x39\x42\x63\xe2\xf7\x24\x40\x0a\x01\x19\x98\xb2\x52\x18\x04\x75\x18\x04\x06\x5d\x65\x14\x59\xe4\x33\x86\xb4\xb8\xdb\x5d\x81\xcc\x41\xa8\x0c\x2e\x92\xf9\x2c\xf9\x62\xd1\xcc\xb8\xe2\x19\x44\xda\xf8\xc5\xb9\xbd\x73\x46\xaa\x55\xfb\xeb\xcb\x97\xf9\x2c\xa6\xf4\x07\xac\x3f\xb9\x84\x99\x06\xa5\xdd\x5a\xaa\xd5\x18\x96\x98\x8a\xca\x22\x21\xcd\x22\xbc\x03\xf7\x54\xa2\x85\x6d\x65\x1d\x2c\x11\x6c\x55\x96\x85\xc4\x0c\x96\x4f\x8c\xc5\xca\xa2\x49\xe0\x72\x02\x57\x75\x13\x0e\x16\x16\xf7\xc6\x65\x3e\x0c\x8c\x37\x29\x23\xc7\xf5\x49\xe6\x33\x98\x4e\xe1\x9a\x13\xc0\xb6\x54\x27\x9d\x51\xda\x38\xb9\x64\xee\x17\x51\x54\x98\x44\x52\xb9\x3f\xfe\x21\xa6\xfd\x93\xa6\xbc\x83\xf9\x2c\xf9\xfc\x54\x52\x4c\x91\xcc\xe2\x17\xe3\xaa\x8f\x7c\xf7\xbf\x9b\x12\x0c\x71\xa5\x64\x11\xbe\x1e\xce\x7d\xb0\x0d\xe0\x7b\x79\x04\x39\x12\x63\x34\x3f\x08\x03\x51\x38\x3c\x2a\x4c\xe1\x4d\xdf\xc4\x2e\xd5\x2a\x97\xab\x9b\x21\xc6\x79\x9d\xce\xe7\xdb\x60\x0a\x6f\x4e\xf8\x62\xf0\x7d\x16\xcb\x02\xbd\x85\xe4\x6f\x22\xdd\x88\x15\x59\x4e\x78\x79\x4c\x02\xf3\xd9\x4d\x4f\xfb\xa3\xc4\x22\xeb\x94\x03\x4a\xf7\x0d\xe4\xb4\x98\xf4\x4b\x90\x30\xe2\xdb\x93\xb2\xe8\xad\x2e\xaa\xad\x1a\x7a\x6a\xd5\x58\x43\x28\xd7\x2a\xf0\xbf\x75\x18\xc4\xe1\xf9\x32\xca\x1c\x64\xd6\x76\xdb\xc1\x58\xea\x19\xff\xb9\x59\xfb\x0b\x92\xfd\xa8\xd7\x7c\xa7\xe1\x24\x33\xda\x3b\x04\x61\xbb\x7c\x84\x14\xfa\x36\x42\xad\x10\x2e\x72\x0a\xe1\xc2\xe7\xc8\x76\xd1\x3d\x90\xf2\xb9\x00\xf3\x33\xe1\xf9\x10\x1a\x8b\x53\x10\x65\x89\x2a\x8b\xfa\xab\xe3\xd7\x57\x27\x7f\xae\x36\x7c\xbe\x9b\x26\xd2\x17\xab\x95\x0f\x6b\x75\xba\x33\xbd\xf0\x9d\x33\x55\xea\x38\x34\x8f\xe1\xdd\x8e\xab\x99\x27\x9f\x64\x51\x10\xce\xa0\xae\x09\xd7\x3e\xa3\x1c\xc4\xd9\x34\xa3\x4f\xf3\x87\x6c\x85\xfb\x2c\x2b\x9d\xa1\x7d\x2e\xc3\x78\x14\xc4\x7c\x66\x29\xc9\x05\xaa\x88\xf5\x62\xf8\xbe\x99\x45\xec\xe7\x5f\xd2\xad\x01\x1f\x1d\xf9\xbe\x80\x11\x39\x1a\x91\xdb\x11\x5d\x0a\x76\x04\xce\x54\x08\xa3\x7f\xa2\xd1\x23\x18\x29\x59\x8c\x9a\x81\x42\x19\x70\xb8\x2d\x0b\xe1\x8e\xee\xe1\x0c\x73\x64\x2b\x09\xb5\xed\x6e\x72\xd9\xdc\xd6\x19\xdd\xf4\x24\x50\x95\x99\x70\x98\xb8\x6d\x59\x00\xdf\xe8\xc1\xf1\x5c\xf4\x35\xf7\x87\x3e\x02\x02\x2f\x8e\x81\x3c\xc4\xc3\xcc\x3d\x3b\xca\x58\x39\xf4\xe4\xa1\x11\x3e\xcf\x23\xbe\x2e\xab\x62\xf3\x1b\x90\x89\x70\x32\x01\xba\xf5\x9b\x71\x69\xf9\xbe\xe9\x0f\x3a\x40\xe5\xa4\x93\x68\x5b\x62\x94\x09\x27\x96\xc2\x62\xf2\xda\x41\x7c\x86\x54\xdc\x2f\x9e\xa5\x15\x94\x20\x06\xd5\x56\x6c\x90\x04\x4f\x4c\xd1\x31\xc3\xe8\x78\x02\x37\xbe\x6d\x1c\x87\x41\x07\xcd\xd6\xca\xa1\xbb\x97\xd4\x19\xcc\xda\xf4\x2d\xfc\xec\x97\x5e\xd6\xcd\xb5\x01\xc9\x79\xe7\xd6\x79\x4e\x94\xa1\x4f\x99\x8c\x24\x48\xe5\xc6\x9e\x78\x0e\x52\xc5\x0d\xd2\x2b\xfb\x73\xe6\xee\xe5\xa2\xc5\x2f\x8f\xed\xbf\x0a\x3b\xc3\x5c\x54\x85\x6b\x1b\xa5\x91\x4c\x32\xbf\x6c\xa3\x78\x08\x78\xba\x05\xb7\x95\x83\xe6\xb0\x30\xf5\x5f\xf8\x91\xe2\xe4\x60\x4f\xd4\x73\x0c\x5b\x68\xa7\x69\x0c\xd1\x2f\x7e\xf6\xee\x2b\x1a\x04\x41\x3b\x1c\xda\x91\xbc\x4d\x9a\x8b\xb9\xd5\x6b\x2a\xc3\x21\xd1\x68\xf9\xae\x1d\xc6\x87\xcc\x2c\xdf\xba\x84\xe9\x5c\x1e\x8d\x2a\x85\x8f\x25\xa6\x0e\x33\xe8\x66\x0f\xd1\x29\xf8\xdd\xe7\xd1\x18\xb6\xde\x54\xdd\x1a\x6c\x18\x67\x9b\x84\x74\x8d\xe9\x26\x1a\x32\xc9\xe0\x04\x13\xec\xcc\xb4\xca\x9d\xbb\x69\xe7\x99\xf7\x19\x74\xf7\x72\x31\x06\x06\xf1\xbd\x5c\x40\xcf\xe3\x01\x07\x6e\x72\x4d\xde\x39\x51\x6d\x98\x12\xfe\xcc\x00\x6b\x01\x18\x5f\xbd\x6d\xe3\xfa\xca\xe1\xb4\x3e\x35\x95\xfc\xf7\x6f\x17\x3e\x83\x18\x11\x7a\x86\xbc\x79\x8f\x0e\x12\x6d\x83\x6d\x52\xe3\xc9\x64\x63\x7d\x32\x81\xb9\x7a\xd0\x1b\xa6\xa6\x20\x52\x57\x89\x02\x74\x89\xc6\x9f\x54\xfb\x19\x40\x53\xd6\xba\x7d\xbe\x9b\xd1\x90\xae\x85\x54\x89\x37\xd4\xe4\xba\x47\xee\x7f\x14\x2e\x5d\xfb\xe6\x3d\xcf\xee\xdf\x9c\x52\xe1\xab\x95\x2f\x81\x1b\x9f\xd6\xfa\x64\xd5\xfe\x8b\x37\x40\x70\xfc\x0e\xd8\x57\xba\xf9\x53\x1f\x80\x37\xc9\xb4\x22\x46\x42\x57\x51\x1f\x56\xaf\x85\xcf\xff\xfa\x9c\x08\xfe\xef\x2f\x8a\xb6\xff\xbb\x47\x45\xf0\x12\x7f\x0f\xf6\x17\xff\xbd\x5c\x1c\x3c\x29\x06\xc3\xa4\x7b\x58\xb4\xdd\x70\xf2\x6d\xd1\xeb\x9b\x73\xcf\x8a\xd7\x44\x56\x9f\x8c\xe2\xe8\x67\x5b\x9f\xae\x57\xe9\x75\xd1\xf1\xa9\x6e\x78\x53\x13\xb6\xad\xbb\xd6\x7a\x63\x63\xb8\x82\xb7\xef\x41\xc2\xf7\x53\xb8\x7e\x0f\xf2\xea\x6a\x3f\xdb\x7a\x6d\xce\xb2\xf7\x72\x41\x1d\x1c\xb7\x2f\x9e\x60\xdf\xb2\x0b\xdf\xc0\x44\x19\x22\x39\x86\xd4\x3d\xc6\xfc\xd6\x94\xf9\x61\xdf\x77\xec\x48\xe6\xd0\x74\xfe\x4d\xaf\xf5\xaf\xbb\xc6\x3f\xd9\x51\x5d\xdf\x5f\xf7\xba\x7e\xd8\x36\x43\xac\xd6\x1c\x4c\x3f\x47\xdd\xf3\xab\x21\x0c\xbf\x42\x2a\x8a\xc2\x7a\xf2\x40\x58\x2e\x85\x92\xa9\xa5\xca\xf0\x92\xd7\xb5\x20\x94\x9f\x6c\xff\x11\x5d\xf8\xf5\x34\x5f\x38\xba\xbf\xf9\xbd\xd6\xe5\xe4\xf8\xec\x2d\xed\xd8\xff\x4f\x43\xef\xc8\x1c\x2c\xcf\x81\xfe\x41\x1f\xc2\xba\x47\xc8\xfe\x1d\x00\x00\xff\xff\xe0\x3f\xf8\xa3\x9c\x12\x00\x00") func templateDialectSqlCreateTmplBytes() ([]byte, error) { return bindataRead( @@ -621,7 +621,7 @@ func templateDialectSqlCreateTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "template/dialect/sql/create.tmpl", size: 4703, mode: os.FileMode(420), modTime: time.Unix(1, 0)} + info := bindataFileInfo{name: "template/dialect/sql/create.tmpl", size: 4764, mode: os.FileMode(420), modTime: time.Unix(1, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/entc/gen/template/builder/create.tmpl b/entc/gen/template/builder/create.tmpl index abc848658..5e3128e0f 100644 --- a/entc/gen/template/builder/create.tmpl +++ b/entc/gen/template/builder/create.tmpl @@ -34,14 +34,17 @@ type {{ $builder }} struct { // Save creates the {{ $.Name }} in the database. func ({{ $receiver }} *{{ $builder }}) Save(ctx context.Context) (*{{ $.Name }}, error) { - if err := {{ $receiver }}.preSave(); err != nil { - return nil, err - } var ( err error node *{{ $.Name }} ) + {{- if $.HasDefault }} + {{ $receiver }}.defaults() + {{- end }} if len({{ $receiver }}.hooks) == 0 { + if err = {{ $receiver }}.check(); err != nil { + return nil, err + } node, err = {{ $receiver }}.{{ $.Storage }}Save(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -49,6 +52,9 @@ func ({{ $receiver }} *{{ $builder }}) Save(ctx context.Context) (*{{ $.Name }}, if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = {{ $receiver }}.check(); err != nil { + return nil, err + } {{ $mutation }} = mutation node, err = {{ $receiver }}.{{ $.Storage }}Save(ctx) mutation.done = true @@ -73,17 +79,27 @@ func ({{ $receiver }} *{{ $builder }}) SaveX(ctx context.Context) *{{ $.Name }} return v } -func ({{ $receiver }} *{{ $builder }}) preSave() error { - {{- $fields := $.Fields }}{{ if $.ID.UserDefined }}{{ $fields = append $fields $.ID }}{{ end }} - {{- range $f := $fields }} - {{- if or $f.Default (and (not $f.Optional) (ne $f.Name $.ID.Name)) }} - if _, ok := {{ $mutation }}.{{ $f.MutationGet }}(); !ok { - {{- if $f.Default }} +{{- $fields := $.Fields }}{{ if $.ID.UserDefined }}{{ $fields = append $fields $.ID }}{{ end }} +{{ if $.HasDefault }} + // defaults sets the default values of the builder before save. + func ({{ $receiver }} *{{ $builder }}) defaults() { + {{- range $f := $fields }} + {{- if or $f.Default }} + if _, ok := {{ $mutation }}.{{ $f.MutationGet }}(); !ok { v := {{ $.Package }}.{{ $f.DefaultName }}{{ if or $f.IsTime $f.IsUUID }}(){{ end }} {{ $mutation }}.Set{{ $f.StructField }}(v) - {{- else }} - return &ValidationError{Name: "{{ $f.Name }}", err: errors.New("{{ $pkg }}: missing required field \"{{ $f.Name }}\"")} - {{- end }} + } + {{- end }} + {{- end }} + } +{{ end }} + +// check runs all checks and user-defined validators on the builder. +func ({{ $receiver }} *{{ $builder }}) check() error { + {{- range $f := $fields }} + {{- if and (not $f.Optional) (ne $f.Name $.ID.Name) }} + if _, ok := {{ $mutation }}.{{ $f.MutationGet }}(); !ok { + return &ValidationError{Name: "{{ $f.Name }}", err: errors.New("{{ $pkg }}: missing required field \"{{ $f.Name }}\"")} } {{- end }} {{- with or $f.Validators $f.IsEnum }} diff --git a/entc/gen/template/builder/update.tmpl b/entc/gen/template/builder/update.tmpl index 7ebd103af..fc0f9a577 100644 --- a/entc/gen/template/builder/update.tmpl +++ b/entc/gen/template/builder/update.tmpl @@ -45,14 +45,19 @@ func ({{ $receiver}} *{{ $builder }}) Where(ps ...predicate.{{ $.Name }}) *{{ $b // Save executes the query and returns the number of rows/vertices matched by this operation. func ({{ $receiver }} *{{ $builder }}) Save(ctx context.Context) (int, error) { - {{ with extend $ "Receiver" $receiver "Package" $pkg "ZeroValue" 0 -}} - {{ template "update/save" . }} - {{- end -}} var ( err error affected int ) + {{- if $.HasUpdateDefault }} + {{ $receiver }}.defaults() + {{- end }} if len({{ $receiver }}.hooks) == 0 { + {{- if $.HasUpdateCheckers }} + if err = {{ $receiver }}.check(); err != nil { + return 0, err + } + {{- end }} affected, err = {{ $receiver }}.{{ $.Storage }}Save(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -60,6 +65,11 @@ func ({{ $receiver }} *{{ $builder }}) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + {{- if $.HasUpdateCheckers }} + if err = {{ $receiver }}.check(); err != nil { + return 0, err + } + {{- end }} {{ $mutation }} = mutation affected, err = {{ $receiver }}.{{ $.Storage }}Save(ctx) mutation.done = true @@ -97,6 +107,10 @@ func ({{ $receiver }} *{{ $builder }}) ExecX(ctx context.Context) { } } +{{ with extend $ "Receiver" $receiver "Package" $pkg "Builder" $builder }} + {{ template "update/checks" . }} +{{ end }} + {{ with extend $ "Builder" $builder "Package" $pkg }} {{ $tmpl := printf "dialect/%s/update" $.Storage }} {{ xtemplate $tmpl . }} @@ -123,14 +137,19 @@ type {{ $onebuilder }} struct { // Save executes the query and returns the updated entity. func ({{ $receiver }} *{{ $onebuilder }} ) Save(ctx context.Context) (*{{ $.Name }}, error) { - {{ with extend $ "Receiver" $receiver "Package" $pkg "ZeroValue" "nil" -}} - {{ template "update/save" . }} - {{- end -}} var ( err error node *{{ $.Name }} ) + {{- if $.HasUpdateDefault }} + {{ $receiver }}.defaults() + {{- end }} if len({{ $receiver }}.hooks) == 0 { + {{- if $.HasUpdateCheckers }} + if err = {{ $receiver }}.check(); err != nil { + return nil, err + } + {{- end }} node, err = {{ $receiver }}.{{ $.Storage }}Save(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -138,6 +157,11 @@ func ({{ $receiver }} *{{ $onebuilder }} ) Save(ctx context.Context) (*{{ $.Name if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + {{- if $.HasUpdateCheckers }} + if err = {{ $receiver }}.check(); err != nil { + return nil, err + } + {{- end }} {{ $mutation }} = mutation node, err = {{ $receiver }}.{{ $.Storage }}Save(ctx) mutation.done = true @@ -175,6 +199,10 @@ func ({{ $receiver }} *{{ $onebuilder }}) ExecX(ctx context.Context) { } } +{{ with extend $ "Receiver" $receiver "Package" $pkg "Builder" $onebuilder }} + {{ template "update/checks" . }} +{{ end }} + {{ with extend $ "Builder" $onebuilder "Package" $pkg }} {{ $tmpl := printf "dialect/%s/update" $.Storage }} {{ xtemplate $tmpl . }} @@ -225,34 +253,49 @@ func ({{ $receiver }} *{{ $onebuilder }}) ExecX(ctx context.Context) { {{ end }} {{ end }} -{{/* shared template for the save method of the 2 builders */}} -{{ define "update/save" }} -{{- $pkg := .Scope.Package -}} -{{- $zero := .Scope.ZeroValue }} -{{- $receiver := .Scope.Receiver -}} -{{- $mutation := print $receiver ".mutation" -}} +{{/* shared template for the 2 update builders */}} +{{ define "update/checks" }} +{{ $pkg := .Scope.Package }} +{{ $receiver := .Scope.Receiver }} +{{ $builder := pascal .Scope.Builder }} +{{ $mutation := print $receiver ".mutation" }} -{{- range $_, $f := $.Fields -}} - {{- if $f.UpdateDefault -}} - if _, ok := {{ $mutation }}.{{ $f.MutationGet }}(); !ok {{ if $f.Optional }} && !{{ $mutation }}.{{ $f.StructField }}Cleared() {{ end }} { - v := {{ $.Package }}.{{ $f.UpdateDefaultName }}{{ if $f.IsTime }}(){{ end }} - {{ $mutation }}.Set{{ $f.StructField }}(v) - } - {{ end -}} - {{ with and (or $f.Validators $f.IsEnum) (not $f.Immutable) -}} - if v, ok := {{ $mutation }}.{{ $f.MutationGet }}(); ok { - {{- $basic := $f.BasicType "v" }} - if err := {{ $.Package }}.{{ $f.Validator }}({{ $basic }}); err != nil { - return {{ $zero }}, &ValidationError{Name: "{{ $f.Name }}", err: fmt.Errorf("{{ $pkg }}: validator failed for field \"{{ $f.Name }}\": %w", err)} - } - } - {{ end -}} -{{ end -}} -{{- range $_, $e := $.Edges }} - {{ if and $e.Unique (not $e.Optional) -}} - if _, ok := {{ $mutation }}.{{ $e.StructField }}ID(); {{ $mutation }}.{{ $e.StructField }}Cleared() && !ok { - return {{ $zero }}, errors.New("{{ $pkg }}: clearing a unique edge \"{{ $e.Name }}\"") - } - {{ end -}} -{{ end -}} +{{ if $.HasUpdateDefault }} + // defaults sets the default values of the builder before save. + func ({{ $receiver }} *{{ $builder }}) defaults() { + {{- range $f := $.Fields }} + {{- if $f.UpdateDefault }} + if _, ok := {{ $mutation }}.{{ $f.MutationGet }}(); !ok {{ if $f.Optional }} && !{{ $mutation }}.{{ $f.StructField }}Cleared() {{ end }} { + v := {{ $.Package }}.{{ $f.UpdateDefaultName }}{{ if $f.IsTime }}(){{ end }} + {{ $mutation }}.Set{{ $f.StructField }}(v) + } + {{- end }} + {{- end }} + } {{ end }} + +{{ if $.HasUpdateCheckers }} + // check runs all checks and user-defined validators on the builder. + func ({{ $receiver }} *{{ $builder }}) check() error { + {{- range $f := $.Fields }} + {{- with and (or $f.Validators $f.IsEnum) (not $f.Immutable) }} + if v, ok := {{ $mutation }}.{{ $f.MutationGet }}(); ok { + {{- $basic := $f.BasicType "v" }} + if err := {{ $.Package }}.{{ $f.Validator }}({{ $basic }}); err != nil { + return &ValidationError{Name: "{{ $f.Name }}", err: fmt.Errorf("{{ $pkg }}: validator failed for field \"{{ $f.Name }}\": %w", err)} + } + } + {{- end }} + {{- end }} + {{- range $e := $.Edges }} + {{- if and $e.Unique (not $e.Optional) }} + if _, ok := {{ $mutation }}.{{ $e.StructField }}ID(); {{ $mutation }}.{{ $e.StructField }}Cleared() && !ok { + return errors.New("{{ $pkg }}: clearing a required unique edge \"{{ $e.Name }}\"") + } + {{- end }} + {{- end }} + return nil + } +{{ end }} + +{{ end }} \ No newline at end of file diff --git a/entc/gen/template/dialect/sql/create.tmpl b/entc/gen/template/dialect/sql/create.tmpl index ae86de01c..7ea985a63 100644 --- a/entc/gen/template/dialect/sql/create.tmpl +++ b/entc/gen/template/dialect/sql/create.tmpl @@ -84,14 +84,17 @@ func ({{ $receiver }} *{{ $builder }}) Save(ctx context.Context) ([]*{{ $.Name } for i := range {{ $receiver }}.builders { func(i int, root context.Context) { builder := {{ $receiver }}.builders[i] + {{- if $.HasDefault }} + builder.defaults() + {{- end }} var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*{{ $.MutationName }}) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/gen/type.go b/entc/gen/type.go index ac595ab46..72ce450e3 100644 --- a/entc/gen/type.go +++ b/entc/gen/type.go @@ -300,6 +300,21 @@ func (t Type) HasNumeric() bool { return false } +// HasUpdateCheckers reports if this type has any checkers to run on update(one). +func (t Type) HasUpdateCheckers() bool { + for _, f := range t.Fields { + if (f.Validators > 0 || f.IsEnum()) && !f.Immutable { + return true + } + } + for _, e := range t.Edges { + if e.Unique && !e.Optional { + return true + } + } + return false +} + // FKEdges returns all edges that reside on the type table as foreign-keys. func (t Type) FKEdges() (edges []*Edge) { for _, e := range t.Edges { diff --git a/entc/integration/config/ent/user_create.go b/entc/integration/config/ent/user_create.go index bd4c08baf..aea2c7670 100644 --- a/entc/integration/config/ent/user_create.go +++ b/entc/integration/config/ent/user_create.go @@ -29,14 +29,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -44,6 +44,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -68,7 +71,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { return nil } @@ -114,13 +118,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/customid/ent/blob_create.go b/entc/integration/customid/ent/blob_create.go index 41c113a51..4eaa7b15b 100644 --- a/entc/integration/customid/ent/blob_create.go +++ b/entc/integration/customid/ent/blob_create.go @@ -8,6 +8,7 @@ package ent import ( "context" + "errors" "fmt" "github.com/facebook/ent/dialect/sql/sqlgraph" @@ -76,14 +77,15 @@ func (bc *BlobCreate) Mutation() *BlobMutation { // Save creates the Blob in the database. func (bc *BlobCreate) Save(ctx context.Context) (*Blob, error) { - if err := bc.preSave(); err != nil { - return nil, err - } var ( err error node *Blob ) + bc.defaults() if len(bc.hooks) == 0 { + if err = bc.check(); err != nil { + return nil, err + } node, err = bc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -91,6 +93,9 @@ func (bc *BlobCreate) Save(ctx context.Context) (*Blob, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = bc.check(); err != nil { + return nil, err + } bc.mutation = mutation node, err = bc.sqlSave(ctx) mutation.done = true @@ -115,7 +120,8 @@ func (bc *BlobCreate) SaveX(ctx context.Context) *Blob { return v } -func (bc *BlobCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (bc *BlobCreate) defaults() { if _, ok := bc.mutation.UUID(); !ok { v := blob.DefaultUUID() bc.mutation.SetUUID(v) @@ -124,6 +130,13 @@ func (bc *BlobCreate) preSave() error { v := blob.DefaultID() bc.mutation.SetID(v) } +} + +// check runs all checks and user-defined validators on the builder. +func (bc *BlobCreate) check() error { + if _, ok := bc.mutation.UUID(); !ok { + return &ValidationError{Name: "uuid", err: errors.New("ent: missing required field \"uuid\"")} + } return nil } @@ -216,14 +229,15 @@ func (bcb *BlobCreateBulk) Save(ctx context.Context) ([]*Blob, error) { for i := range bcb.builders { func(i int, root context.Context) { builder := bcb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*BlobMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/customid/ent/blob_update.go b/entc/integration/customid/ent/blob_update.go index b6c28e4d5..a8364e550 100644 --- a/entc/integration/customid/ent/blob_update.go +++ b/entc/integration/customid/ent/blob_update.go @@ -106,7 +106,6 @@ func (bu *BlobUpdate) RemoveLinks(b ...*Blob) *BlobUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (bu *BlobUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -362,7 +361,6 @@ func (buo *BlobUpdateOne) RemoveLinks(b ...*Blob) *BlobUpdateOne { // Save executes the query and returns the updated entity. func (buo *BlobUpdateOne) Save(ctx context.Context) (*Blob, error) { - var ( err error node *Blob diff --git a/entc/integration/customid/ent/car_create.go b/entc/integration/customid/ent/car_create.go index d22b5d1fb..cc60eda93 100644 --- a/entc/integration/customid/ent/car_create.go +++ b/entc/integration/customid/ent/car_create.go @@ -90,14 +90,14 @@ func (cc *CarCreate) Mutation() *CarMutation { // Save creates the Car in the database. func (cc *CarCreate) Save(ctx context.Context) (*Car, error) { - if err := cc.preSave(); err != nil { - return nil, err - } var ( err error node *Car ) if len(cc.hooks) == 0 { + if err = cc.check(); err != nil { + return nil, err + } node, err = cc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -105,6 +105,9 @@ func (cc *CarCreate) Save(ctx context.Context) (*Car, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cc.check(); err != nil { + return nil, err + } cc.mutation = mutation node, err = cc.sqlSave(ctx) mutation.done = true @@ -129,7 +132,8 @@ func (cc *CarCreate) SaveX(ctx context.Context) *Car { return v } -func (cc *CarCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (cc *CarCreate) check() error { if v, ok := cc.mutation.BeforeID(); ok { if err := car.BeforeIDValidator(v); err != nil { return &ValidationError{Name: "before_id", err: fmt.Errorf("ent: validator failed for field \"before_id\": %w", err)} @@ -242,13 +246,13 @@ func (ccb *CarCreateBulk) Save(ctx context.Context) ([]*Car, error) { func(i int, root context.Context) { builder := ccb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*CarMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/customid/ent/car_update.go b/entc/integration/customid/ent/car_update.go index 917acc9b1..04aba5ed1 100644 --- a/entc/integration/customid/ent/car_update.go +++ b/entc/integration/customid/ent/car_update.go @@ -124,22 +124,14 @@ func (cu *CarUpdate) ClearOwner() *CarUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (cu *CarUpdate) Save(ctx context.Context) (int, error) { - if v, ok := cu.mutation.BeforeID(); ok { - if err := car.BeforeIDValidator(v); err != nil { - return 0, &ValidationError{Name: "before_id", err: fmt.Errorf("ent: validator failed for field \"before_id\": %w", err)} - } - } - if v, ok := cu.mutation.AfterID(); ok { - if err := car.AfterIDValidator(v); err != nil { - return 0, &ValidationError{Name: "after_id", err: fmt.Errorf("ent: validator failed for field \"after_id\": %w", err)} - } - } - var ( err error affected int ) if len(cu.hooks) == 0 { + if err = cu.check(); err != nil { + return 0, err + } affected, err = cu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -147,6 +139,9 @@ func (cu *CarUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cu.check(); err != nil { + return 0, err + } cu.mutation = mutation affected, err = cu.sqlSave(ctx) mutation.done = true @@ -184,6 +179,21 @@ func (cu *CarUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (cu *CarUpdate) check() error { + if v, ok := cu.mutation.BeforeID(); ok { + if err := car.BeforeIDValidator(v); err != nil { + return &ValidationError{Name: "before_id", err: fmt.Errorf("ent: validator failed for field \"before_id\": %w", err)} + } + } + if v, ok := cu.mutation.AfterID(); ok { + if err := car.AfterIDValidator(v); err != nil { + return &ValidationError{Name: "after_id", err: fmt.Errorf("ent: validator failed for field \"after_id\": %w", err)} + } + } + return nil +} + func (cu *CarUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -394,22 +404,14 @@ func (cuo *CarUpdateOne) ClearOwner() *CarUpdateOne { // Save executes the query and returns the updated entity. func (cuo *CarUpdateOne) Save(ctx context.Context) (*Car, error) { - if v, ok := cuo.mutation.BeforeID(); ok { - if err := car.BeforeIDValidator(v); err != nil { - return nil, &ValidationError{Name: "before_id", err: fmt.Errorf("ent: validator failed for field \"before_id\": %w", err)} - } - } - if v, ok := cuo.mutation.AfterID(); ok { - if err := car.AfterIDValidator(v); err != nil { - return nil, &ValidationError{Name: "after_id", err: fmt.Errorf("ent: validator failed for field \"after_id\": %w", err)} - } - } - var ( err error node *Car ) if len(cuo.hooks) == 0 { + if err = cuo.check(); err != nil { + return nil, err + } node, err = cuo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -417,6 +419,9 @@ func (cuo *CarUpdateOne) Save(ctx context.Context) (*Car, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cuo.check(); err != nil { + return nil, err + } cuo.mutation = mutation node, err = cuo.sqlSave(ctx) mutation.done = true @@ -454,6 +459,21 @@ func (cuo *CarUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (cuo *CarUpdateOne) check() error { + if v, ok := cuo.mutation.BeforeID(); ok { + if err := car.BeforeIDValidator(v); err != nil { + return &ValidationError{Name: "before_id", err: fmt.Errorf("ent: validator failed for field \"before_id\": %w", err)} + } + } + if v, ok := cuo.mutation.AfterID(); ok { + if err := car.AfterIDValidator(v); err != nil { + return &ValidationError{Name: "after_id", err: fmt.Errorf("ent: validator failed for field \"after_id\": %w", err)} + } + } + return nil +} + func (cuo *CarUpdateOne) sqlSave(ctx context.Context) (c *Car, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/entc/integration/customid/ent/group_create.go b/entc/integration/customid/ent/group_create.go index d7286737e..8fdf81f5b 100644 --- a/entc/integration/customid/ent/group_create.go +++ b/entc/integration/customid/ent/group_create.go @@ -51,14 +51,14 @@ func (gc *GroupCreate) Mutation() *GroupMutation { // Save creates the Group in the database. func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { - if err := gc.preSave(); err != nil { - return nil, err - } var ( err error node *Group ) if len(gc.hooks) == 0 { + if err = gc.check(); err != nil { + return nil, err + } node, err = gc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -66,6 +66,9 @@ func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gc.check(); err != nil { + return nil, err + } gc.mutation = mutation node, err = gc.sqlSave(ctx) mutation.done = true @@ -90,7 +93,8 @@ func (gc *GroupCreate) SaveX(ctx context.Context) *Group { return v } -func (gc *GroupCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (gc *GroupCreate) check() error { return nil } @@ -161,13 +165,13 @@ func (gcb *GroupCreateBulk) Save(ctx context.Context) ([]*Group, error) { func(i int, root context.Context) { builder := gcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*GroupMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/customid/ent/group_update.go b/entc/integration/customid/ent/group_update.go index 5ed5e15be..c0a124d9b 100644 --- a/entc/integration/customid/ent/group_update.go +++ b/entc/integration/customid/ent/group_update.go @@ -75,7 +75,6 @@ func (gu *GroupUpdate) RemoveUsers(u ...*User) *GroupUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (gu *GroupUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -258,7 +257,6 @@ func (guo *GroupUpdateOne) RemoveUsers(u ...*User) *GroupUpdateOne { // Save executes the query and returns the updated entity. func (guo *GroupUpdateOne) Save(ctx context.Context) (*Group, error) { - var ( err error node *Group diff --git a/entc/integration/customid/ent/pet_create.go b/entc/integration/customid/ent/pet_create.go index 393111891..b31d8af1c 100644 --- a/entc/integration/customid/ent/pet_create.go +++ b/entc/integration/customid/ent/pet_create.go @@ -105,14 +105,14 @@ func (pc *PetCreate) Mutation() *PetMutation { // Save creates the Pet in the database. func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { - if err := pc.preSave(); err != nil { - return nil, err - } var ( err error node *Pet ) if len(pc.hooks) == 0 { + if err = pc.check(); err != nil { + return nil, err + } node, err = pc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -120,6 +120,9 @@ func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = pc.check(); err != nil { + return nil, err + } pc.mutation = mutation node, err = pc.sqlSave(ctx) mutation.done = true @@ -144,7 +147,8 @@ func (pc *PetCreate) SaveX(ctx context.Context) *Pet { return v } -func (pc *PetCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (pc *PetCreate) check() error { if v, ok := pc.mutation.ID(); ok { if err := pet.IDValidator(v); err != nil { return &ValidationError{Name: "id", err: fmt.Errorf("ent: validator failed for field \"id\": %w", err)} @@ -273,13 +277,13 @@ func (pcb *PetCreateBulk) Save(ctx context.Context) ([]*Pet, error) { func(i int, root context.Context) { builder := pcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*PetMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/customid/ent/pet_update.go b/entc/integration/customid/ent/pet_update.go index 7b6b0f683..095cb028a 100644 --- a/entc/integration/customid/ent/pet_update.go +++ b/entc/integration/customid/ent/pet_update.go @@ -162,7 +162,6 @@ func (pu *PetUpdate) ClearBestFriend() *PetUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (pu *PetUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -555,7 +554,6 @@ func (puo *PetUpdateOne) ClearBestFriend() *PetUpdateOne { // Save executes the query and returns the updated entity. func (puo *PetUpdateOne) Save(ctx context.Context) (*Pet, error) { - var ( err error node *Pet diff --git a/entc/integration/customid/ent/user_create.go b/entc/integration/customid/ent/user_create.go index d49c757e7..b803b2bc0 100644 --- a/entc/integration/customid/ent/user_create.go +++ b/entc/integration/customid/ent/user_create.go @@ -101,14 +101,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -116,6 +116,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -140,7 +143,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { return nil } @@ -268,13 +272,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/customid/ent/user_update.go b/entc/integration/customid/ent/user_update.go index 40ff0c98c..35d9d4123 100644 --- a/entc/integration/customid/ent/user_update.go +++ b/entc/integration/customid/ent/user_update.go @@ -173,7 +173,6 @@ func (uu *UserUpdate) RemovePets(p ...*Pet) *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -596,7 +595,6 @@ func (uuo *UserUpdateOne) RemovePets(p ...*Pet) *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - var ( err error node *User diff --git a/entc/integration/ent/card_create.go b/entc/integration/ent/card_create.go index 9ebbf137c..59aef809f 100644 --- a/entc/integration/ent/card_create.go +++ b/entc/integration/ent/card_create.go @@ -115,14 +115,15 @@ func (cc *CardCreate) Mutation() *CardMutation { // Save creates the Card in the database. func (cc *CardCreate) Save(ctx context.Context) (*Card, error) { - if err := cc.preSave(); err != nil { - return nil, err - } var ( err error node *Card ) + cc.defaults() if len(cc.hooks) == 0 { + if err = cc.check(); err != nil { + return nil, err + } node, err = cc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -130,6 +131,9 @@ func (cc *CardCreate) Save(ctx context.Context) (*Card, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cc.check(); err != nil { + return nil, err + } cc.mutation = mutation node, err = cc.sqlSave(ctx) mutation.done = true @@ -154,7 +158,8 @@ func (cc *CardCreate) SaveX(ctx context.Context) *Card { return v } -func (cc *CardCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (cc *CardCreate) defaults() { if _, ok := cc.mutation.CreateTime(); !ok { v := card.DefaultCreateTime() cc.mutation.SetCreateTime(v) @@ -163,6 +168,16 @@ func (cc *CardCreate) preSave() error { v := card.DefaultUpdateTime() cc.mutation.SetUpdateTime(v) } +} + +// check runs all checks and user-defined validators on the builder. +func (cc *CardCreate) check() error { + if _, ok := cc.mutation.CreateTime(); !ok { + return &ValidationError{Name: "create_time", err: errors.New("ent: missing required field \"create_time\"")} + } + if _, ok := cc.mutation.UpdateTime(); !ok { + return &ValidationError{Name: "update_time", err: errors.New("ent: missing required field \"update_time\"")} + } if _, ok := cc.mutation.Number(); !ok { return &ValidationError{Name: "number", err: errors.New("ent: missing required field \"number\"")} } @@ -290,14 +305,15 @@ func (ccb *CardCreateBulk) Save(ctx context.Context) ([]*Card, error) { for i := range ccb.builders { func(i int, root context.Context) { builder := ccb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*CardMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/card_update.go b/entc/integration/ent/card_update.go index 844a9d4ae..83691e9a9 100644 --- a/entc/integration/ent/card_update.go +++ b/entc/integration/ent/card_update.go @@ -121,21 +121,15 @@ func (cu *CardUpdate) RemoveSpec(s ...*Spec) *CardUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (cu *CardUpdate) Save(ctx context.Context) (int, error) { - if _, ok := cu.mutation.UpdateTime(); !ok { - v := card.UpdateDefaultUpdateTime() - cu.mutation.SetUpdateTime(v) - } - if v, ok := cu.mutation.Name(); ok { - if err := card.NameValidator(v); err != nil { - return 0, &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} - } - } - var ( err error affected int ) + cu.defaults() if len(cu.hooks) == 0 { + if err = cu.check(); err != nil { + return 0, err + } affected, err = cu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -143,6 +137,9 @@ func (cu *CardUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cu.check(); err != nil { + return 0, err + } cu.mutation = mutation affected, err = cu.sqlSave(ctx) mutation.done = true @@ -180,6 +177,24 @@ func (cu *CardUpdate) ExecX(ctx context.Context) { } } +// defaults sets the default values of the builder before save. +func (cu *CardUpdate) defaults() { + if _, ok := cu.mutation.UpdateTime(); !ok { + v := card.UpdateDefaultUpdateTime() + cu.mutation.SetUpdateTime(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (cu *CardUpdate) check() error { + if v, ok := cu.mutation.Name(); ok { + if err := card.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} + } + } + return nil +} + func (cu *CardUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -413,21 +428,15 @@ func (cuo *CardUpdateOne) RemoveSpec(s ...*Spec) *CardUpdateOne { // Save executes the query and returns the updated entity. func (cuo *CardUpdateOne) Save(ctx context.Context) (*Card, error) { - if _, ok := cuo.mutation.UpdateTime(); !ok { - v := card.UpdateDefaultUpdateTime() - cuo.mutation.SetUpdateTime(v) - } - if v, ok := cuo.mutation.Name(); ok { - if err := card.NameValidator(v); err != nil { - return nil, &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} - } - } - var ( err error node *Card ) + cuo.defaults() if len(cuo.hooks) == 0 { + if err = cuo.check(); err != nil { + return nil, err + } node, err = cuo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -435,6 +444,9 @@ func (cuo *CardUpdateOne) Save(ctx context.Context) (*Card, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cuo.check(); err != nil { + return nil, err + } cuo.mutation = mutation node, err = cuo.sqlSave(ctx) mutation.done = true @@ -472,6 +484,24 @@ func (cuo *CardUpdateOne) ExecX(ctx context.Context) { } } +// defaults sets the default values of the builder before save. +func (cuo *CardUpdateOne) defaults() { + if _, ok := cuo.mutation.UpdateTime(); !ok { + v := card.UpdateDefaultUpdateTime() + cuo.mutation.SetUpdateTime(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (cuo *CardUpdateOne) check() error { + if v, ok := cuo.mutation.Name(); ok { + if err := card.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} + } + } + return nil +} + func (cuo *CardUpdateOne) sqlSave(ctx context.Context) (c *Card, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/entc/integration/ent/comment_create.go b/entc/integration/ent/comment_create.go index f4bcbaaee..64eb5c7f3 100644 --- a/entc/integration/ent/comment_create.go +++ b/entc/integration/ent/comment_create.go @@ -56,14 +56,14 @@ func (cc *CommentCreate) Mutation() *CommentMutation { // Save creates the Comment in the database. func (cc *CommentCreate) Save(ctx context.Context) (*Comment, error) { - if err := cc.preSave(); err != nil { - return nil, err - } var ( err error node *Comment ) if len(cc.hooks) == 0 { + if err = cc.check(); err != nil { + return nil, err + } node, err = cc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -71,6 +71,9 @@ func (cc *CommentCreate) Save(ctx context.Context) (*Comment, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cc.check(); err != nil { + return nil, err + } cc.mutation = mutation node, err = cc.sqlSave(ctx) mutation.done = true @@ -95,7 +98,8 @@ func (cc *CommentCreate) SaveX(ctx context.Context) *Comment { return v } -func (cc *CommentCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (cc *CommentCreate) check() error { if _, ok := cc.mutation.UniqueInt(); !ok { return &ValidationError{Name: "unique_int", err: errors.New("ent: missing required field \"unique_int\"")} } @@ -171,13 +175,13 @@ func (ccb *CommentCreateBulk) Save(ctx context.Context) ([]*Comment, error) { func(i int, root context.Context) { builder := ccb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*CommentMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/fieldtype_create.go b/entc/integration/ent/fieldtype_create.go index 32a5c5a06..462a8bed1 100644 --- a/entc/integration/ent/fieldtype_create.go +++ b/entc/integration/ent/fieldtype_create.go @@ -554,14 +554,15 @@ func (ftc *FieldTypeCreate) Mutation() *FieldTypeMutation { // Save creates the FieldType in the database. func (ftc *FieldTypeCreate) Save(ctx context.Context) (*FieldType, error) { - if err := ftc.preSave(); err != nil { - return nil, err - } var ( err error node *FieldType ) + ftc.defaults() if len(ftc.hooks) == 0 { + if err = ftc.check(); err != nil { + return nil, err + } node, err = ftc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -569,6 +570,9 @@ func (ftc *FieldTypeCreate) Save(ctx context.Context) (*FieldType, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ftc.check(); err != nil { + return nil, err + } ftc.mutation = mutation node, err = ftc.sqlSave(ctx) mutation.done = true @@ -593,7 +597,16 @@ func (ftc *FieldTypeCreate) SaveX(ctx context.Context) *FieldType { return v } -func (ftc *FieldTypeCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (ftc *FieldTypeCreate) defaults() { + if _, ok := ftc.mutation.Role(); !ok { + v := fieldtype.DefaultRole + ftc.mutation.SetRole(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (ftc *FieldTypeCreate) check() error { if _, ok := ftc.mutation.Int(); !ok { return &ValidationError{Name: "int", err: errors.New("ent: missing required field \"int\"")} } @@ -630,8 +643,7 @@ func (ftc *FieldTypeCreate) preSave() error { } } if _, ok := ftc.mutation.Role(); !ok { - v := fieldtype.DefaultRole - ftc.mutation.SetRole(v) + return &ValidationError{Name: "role", err: errors.New("ent: missing required field \"role\"")} } if v, ok := ftc.mutation.Role(); ok { if err := fieldtype.RoleValidator(v); err != nil { @@ -1042,14 +1054,15 @@ func (ftcb *FieldTypeCreateBulk) Save(ctx context.Context) ([]*FieldType, error) for i := range ftcb.builders { func(i int, root context.Context) { builder := ftcb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*FieldTypeMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/fieldtype_update.go b/entc/integration/ent/fieldtype_update.go index 4a97764c2..d9351adc8 100644 --- a/entc/integration/ent/fieldtype_update.go +++ b/entc/integration/ent/fieldtype_update.go @@ -1000,36 +1000,14 @@ func (ftu *FieldTypeUpdate) Mutation() *FieldTypeMutation { // Save executes the query and returns the number of rows/vertices matched by this operation. func (ftu *FieldTypeUpdate) Save(ctx context.Context) (int, error) { - if v, ok := ftu.mutation.ValidateOptionalInt32(); ok { - if err := fieldtype.ValidateOptionalInt32Validator(v); err != nil { - return 0, &ValidationError{Name: "validate_optional_int32", err: fmt.Errorf("ent: validator failed for field \"validate_optional_int32\": %w", err)} - } - } - if v, ok := ftu.mutation.State(); ok { - if err := fieldtype.StateValidator(v); err != nil { - return 0, &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} - } - } - if v, ok := ftu.mutation.Ndir(); ok { - if err := fieldtype.NdirValidator(string(v)); err != nil { - return 0, &ValidationError{Name: "ndir", err: fmt.Errorf("ent: validator failed for field \"ndir\": %w", err)} - } - } - if v, ok := ftu.mutation.Link(); ok { - if err := fieldtype.LinkValidator(v.String()); err != nil { - return 0, &ValidationError{Name: "link", err: fmt.Errorf("ent: validator failed for field \"link\": %w", err)} - } - } - if v, ok := ftu.mutation.Role(); ok { - if err := fieldtype.RoleValidator(v); err != nil { - return 0, &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} - } - } var ( err error affected int ) if len(ftu.hooks) == 0 { + if err = ftu.check(); err != nil { + return 0, err + } affected, err = ftu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -1037,6 +1015,9 @@ func (ftu *FieldTypeUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ftu.check(); err != nil { + return 0, err + } ftu.mutation = mutation affected, err = ftu.sqlSave(ctx) mutation.done = true @@ -1074,6 +1055,36 @@ func (ftu *FieldTypeUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (ftu *FieldTypeUpdate) check() error { + if v, ok := ftu.mutation.ValidateOptionalInt32(); ok { + if err := fieldtype.ValidateOptionalInt32Validator(v); err != nil { + return &ValidationError{Name: "validate_optional_int32", err: fmt.Errorf("ent: validator failed for field \"validate_optional_int32\": %w", err)} + } + } + if v, ok := ftu.mutation.State(); ok { + if err := fieldtype.StateValidator(v); err != nil { + return &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} + } + } + if v, ok := ftu.mutation.Ndir(); ok { + if err := fieldtype.NdirValidator(string(v)); err != nil { + return &ValidationError{Name: "ndir", err: fmt.Errorf("ent: validator failed for field \"ndir\": %w", err)} + } + } + if v, ok := ftu.mutation.Link(); ok { + if err := fieldtype.LinkValidator(v.String()); err != nil { + return &ValidationError{Name: "link", err: fmt.Errorf("ent: validator failed for field \"link\": %w", err)} + } + } + if v, ok := ftu.mutation.Role(); ok { + if err := fieldtype.RoleValidator(v); err != nil { + return &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} + } + } + return nil +} + func (ftu *FieldTypeUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -2826,36 +2837,14 @@ func (ftuo *FieldTypeUpdateOne) Mutation() *FieldTypeMutation { // Save executes the query and returns the updated entity. func (ftuo *FieldTypeUpdateOne) Save(ctx context.Context) (*FieldType, error) { - if v, ok := ftuo.mutation.ValidateOptionalInt32(); ok { - if err := fieldtype.ValidateOptionalInt32Validator(v); err != nil { - return nil, &ValidationError{Name: "validate_optional_int32", err: fmt.Errorf("ent: validator failed for field \"validate_optional_int32\": %w", err)} - } - } - if v, ok := ftuo.mutation.State(); ok { - if err := fieldtype.StateValidator(v); err != nil { - return nil, &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} - } - } - if v, ok := ftuo.mutation.Ndir(); ok { - if err := fieldtype.NdirValidator(string(v)); err != nil { - return nil, &ValidationError{Name: "ndir", err: fmt.Errorf("ent: validator failed for field \"ndir\": %w", err)} - } - } - if v, ok := ftuo.mutation.Link(); ok { - if err := fieldtype.LinkValidator(v.String()); err != nil { - return nil, &ValidationError{Name: "link", err: fmt.Errorf("ent: validator failed for field \"link\": %w", err)} - } - } - if v, ok := ftuo.mutation.Role(); ok { - if err := fieldtype.RoleValidator(v); err != nil { - return nil, &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} - } - } var ( err error node *FieldType ) if len(ftuo.hooks) == 0 { + if err = ftuo.check(); err != nil { + return nil, err + } node, err = ftuo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -2863,6 +2852,9 @@ func (ftuo *FieldTypeUpdateOne) Save(ctx context.Context) (*FieldType, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ftuo.check(); err != nil { + return nil, err + } ftuo.mutation = mutation node, err = ftuo.sqlSave(ctx) mutation.done = true @@ -2900,6 +2892,36 @@ func (ftuo *FieldTypeUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (ftuo *FieldTypeUpdateOne) check() error { + if v, ok := ftuo.mutation.ValidateOptionalInt32(); ok { + if err := fieldtype.ValidateOptionalInt32Validator(v); err != nil { + return &ValidationError{Name: "validate_optional_int32", err: fmt.Errorf("ent: validator failed for field \"validate_optional_int32\": %w", err)} + } + } + if v, ok := ftuo.mutation.State(); ok { + if err := fieldtype.StateValidator(v); err != nil { + return &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} + } + } + if v, ok := ftuo.mutation.Ndir(); ok { + if err := fieldtype.NdirValidator(string(v)); err != nil { + return &ValidationError{Name: "ndir", err: fmt.Errorf("ent: validator failed for field \"ndir\": %w", err)} + } + } + if v, ok := ftuo.mutation.Link(); ok { + if err := fieldtype.LinkValidator(v.String()); err != nil { + return &ValidationError{Name: "link", err: fmt.Errorf("ent: validator failed for field \"link\": %w", err)} + } + } + if v, ok := ftuo.mutation.Role(); ok { + if err := fieldtype.RoleValidator(v); err != nil { + return &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} + } + } + return nil +} + func (ftuo *FieldTypeUpdateOne) sqlSave(ctx context.Context) (ft *FieldType, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/entc/integration/ent/file_create.go b/entc/integration/ent/file_create.go index 028ea473c..2d0331584 100644 --- a/entc/integration/ent/file_create.go +++ b/entc/integration/ent/file_create.go @@ -134,14 +134,15 @@ func (fc *FileCreate) Mutation() *FileMutation { // Save creates the File in the database. func (fc *FileCreate) Save(ctx context.Context) (*File, error) { - if err := fc.preSave(); err != nil { - return nil, err - } var ( err error node *File ) + fc.defaults() if len(fc.hooks) == 0 { + if err = fc.check(); err != nil { + return nil, err + } node, err = fc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -149,6 +150,9 @@ func (fc *FileCreate) Save(ctx context.Context) (*File, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = fc.check(); err != nil { + return nil, err + } fc.mutation = mutation node, err = fc.sqlSave(ctx) mutation.done = true @@ -173,11 +177,19 @@ func (fc *FileCreate) SaveX(ctx context.Context) *File { return v } -func (fc *FileCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (fc *FileCreate) defaults() { if _, ok := fc.mutation.Size(); !ok { v := file.DefaultSize fc.mutation.SetSize(v) } +} + +// check runs all checks and user-defined validators on the builder. +func (fc *FileCreate) check() error { + if _, ok := fc.mutation.Size(); !ok { + return &ValidationError{Name: "size", err: errors.New("ent: missing required field \"size\"")} + } if v, ok := fc.mutation.Size(); ok { if err := file.SizeValidator(v); err != nil { return &ValidationError{Name: "size", err: fmt.Errorf("ent: validator failed for field \"size\": %w", err)} @@ -319,14 +331,15 @@ func (fcb *FileCreateBulk) Save(ctx context.Context) ([]*File, error) { for i := range fcb.builders { func(i int, root context.Context) { builder := fcb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*FileMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/file_update.go b/entc/integration/ent/file_update.go index 851a065c7..99cb0d295 100644 --- a/entc/integration/ent/file_update.go +++ b/entc/integration/ent/file_update.go @@ -194,17 +194,14 @@ func (fu *FileUpdate) RemoveField(f ...*FieldType) *FileUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (fu *FileUpdate) Save(ctx context.Context) (int, error) { - if v, ok := fu.mutation.Size(); ok { - if err := file.SizeValidator(v); err != nil { - return 0, &ValidationError{Name: "size", err: fmt.Errorf("ent: validator failed for field \"size\": %w", err)} - } - } - var ( err error affected int ) if len(fu.hooks) == 0 { + if err = fu.check(); err != nil { + return 0, err + } affected, err = fu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -212,6 +209,9 @@ func (fu *FileUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = fu.check(); err != nil { + return 0, err + } fu.mutation = mutation affected, err = fu.sqlSave(ctx) mutation.done = true @@ -249,6 +249,16 @@ func (fu *FileUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (fu *FileUpdate) check() error { + if v, ok := fu.mutation.Size(); ok { + if err := file.SizeValidator(v); err != nil { + return &ValidationError{Name: "size", err: fmt.Errorf("ent: validator failed for field \"size\": %w", err)} + } + } + return nil +} + func (fu *FileUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -616,17 +626,14 @@ func (fuo *FileUpdateOne) RemoveField(f ...*FieldType) *FileUpdateOne { // Save executes the query and returns the updated entity. func (fuo *FileUpdateOne) Save(ctx context.Context) (*File, error) { - if v, ok := fuo.mutation.Size(); ok { - if err := file.SizeValidator(v); err != nil { - return nil, &ValidationError{Name: "size", err: fmt.Errorf("ent: validator failed for field \"size\": %w", err)} - } - } - var ( err error node *File ) if len(fuo.hooks) == 0 { + if err = fuo.check(); err != nil { + return nil, err + } node, err = fuo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -634,6 +641,9 @@ func (fuo *FileUpdateOne) Save(ctx context.Context) (*File, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = fuo.check(); err != nil { + return nil, err + } fuo.mutation = mutation node, err = fuo.sqlSave(ctx) mutation.done = true @@ -671,6 +681,16 @@ func (fuo *FileUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (fuo *FileUpdateOne) check() error { + if v, ok := fuo.mutation.Size(); ok { + if err := file.SizeValidator(v); err != nil { + return &ValidationError{Name: "size", err: fmt.Errorf("ent: validator failed for field \"size\": %w", err)} + } + } + return nil +} + func (fuo *FileUpdateOne) sqlSave(ctx context.Context) (f *File, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/entc/integration/ent/filetype_create.go b/entc/integration/ent/filetype_create.go index 7acba8af7..5bd010683 100644 --- a/entc/integration/ent/filetype_create.go +++ b/entc/integration/ent/filetype_create.go @@ -80,14 +80,15 @@ func (ftc *FileTypeCreate) Mutation() *FileTypeMutation { // Save creates the FileType in the database. func (ftc *FileTypeCreate) Save(ctx context.Context) (*FileType, error) { - if err := ftc.preSave(); err != nil { - return nil, err - } var ( err error node *FileType ) + ftc.defaults() if len(ftc.hooks) == 0 { + if err = ftc.check(); err != nil { + return nil, err + } node, err = ftc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -95,6 +96,9 @@ func (ftc *FileTypeCreate) Save(ctx context.Context) (*FileType, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ftc.check(); err != nil { + return nil, err + } ftc.mutation = mutation node, err = ftc.sqlSave(ctx) mutation.done = true @@ -119,13 +123,25 @@ func (ftc *FileTypeCreate) SaveX(ctx context.Context) *FileType { return v } -func (ftc *FileTypeCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (ftc *FileTypeCreate) defaults() { + if _, ok := ftc.mutation.GetType(); !ok { + v := filetype.DefaultType + ftc.mutation.SetType(v) + } + if _, ok := ftc.mutation.State(); !ok { + v := filetype.DefaultState + ftc.mutation.SetState(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (ftc *FileTypeCreate) check() error { if _, ok := ftc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } if _, ok := ftc.mutation.GetType(); !ok { - v := filetype.DefaultType - ftc.mutation.SetType(v) + return &ValidationError{Name: "type", err: errors.New("ent: missing required field \"type\"")} } if v, ok := ftc.mutation.GetType(); ok { if err := filetype.TypeValidator(v); err != nil { @@ -133,8 +149,7 @@ func (ftc *FileTypeCreate) preSave() error { } } if _, ok := ftc.mutation.State(); !ok { - v := filetype.DefaultState - ftc.mutation.SetState(v) + return &ValidationError{Name: "state", err: errors.New("ent: missing required field \"state\"")} } if v, ok := ftc.mutation.State(); ok { if err := filetype.StateValidator(v); err != nil { @@ -228,14 +243,15 @@ func (ftcb *FileTypeCreateBulk) Save(ctx context.Context) ([]*FileType, error) { for i := range ftcb.builders { func(i int, root context.Context) { builder := ftcb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*FileTypeMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/filetype_update.go b/entc/integration/ent/filetype_update.go index aff66912d..3b717372b 100644 --- a/entc/integration/ent/filetype_update.go +++ b/entc/integration/ent/filetype_update.go @@ -109,22 +109,14 @@ func (ftu *FileTypeUpdate) RemoveFiles(f ...*File) *FileTypeUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (ftu *FileTypeUpdate) Save(ctx context.Context) (int, error) { - if v, ok := ftu.mutation.GetType(); ok { - if err := filetype.TypeValidator(v); err != nil { - return 0, &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} - } - } - if v, ok := ftu.mutation.State(); ok { - if err := filetype.StateValidator(v); err != nil { - return 0, &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} - } - } - var ( err error affected int ) if len(ftu.hooks) == 0 { + if err = ftu.check(); err != nil { + return 0, err + } affected, err = ftu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -132,6 +124,9 @@ func (ftu *FileTypeUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ftu.check(); err != nil { + return 0, err + } ftu.mutation = mutation affected, err = ftu.sqlSave(ctx) mutation.done = true @@ -169,6 +164,21 @@ func (ftu *FileTypeUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (ftu *FileTypeUpdate) check() error { + if v, ok := ftu.mutation.GetType(); ok { + if err := filetype.TypeValidator(v); err != nil { + return &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} + } + } + if v, ok := ftu.mutation.State(); ok { + if err := filetype.StateValidator(v); err != nil { + return &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} + } + } + return nil +} + func (ftu *FileTypeUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -357,22 +367,14 @@ func (ftuo *FileTypeUpdateOne) RemoveFiles(f ...*File) *FileTypeUpdateOne { // Save executes the query and returns the updated entity. func (ftuo *FileTypeUpdateOne) Save(ctx context.Context) (*FileType, error) { - if v, ok := ftuo.mutation.GetType(); ok { - if err := filetype.TypeValidator(v); err != nil { - return nil, &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} - } - } - if v, ok := ftuo.mutation.State(); ok { - if err := filetype.StateValidator(v); err != nil { - return nil, &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} - } - } - var ( err error node *FileType ) if len(ftuo.hooks) == 0 { + if err = ftuo.check(); err != nil { + return nil, err + } node, err = ftuo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -380,6 +382,9 @@ func (ftuo *FileTypeUpdateOne) Save(ctx context.Context) (*FileType, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ftuo.check(); err != nil { + return nil, err + } ftuo.mutation = mutation node, err = ftuo.sqlSave(ctx) mutation.done = true @@ -417,6 +422,21 @@ func (ftuo *FileTypeUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (ftuo *FileTypeUpdateOne) check() error { + if v, ok := ftuo.mutation.GetType(); ok { + if err := filetype.TypeValidator(v); err != nil { + return &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} + } + } + if v, ok := ftuo.mutation.State(); ok { + if err := filetype.StateValidator(v); err != nil { + return &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} + } + } + return nil +} + func (ftuo *FileTypeUpdateOne) sqlSave(ctx context.Context) (ft *FileType, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/entc/integration/ent/group_create.go b/entc/integration/ent/group_create.go index 42d255ed8..f4e550ff4 100644 --- a/entc/integration/ent/group_create.go +++ b/entc/integration/ent/group_create.go @@ -144,14 +144,15 @@ func (gc *GroupCreate) Mutation() *GroupMutation { // Save creates the Group in the database. func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { - if err := gc.preSave(); err != nil { - return nil, err - } var ( err error node *Group ) + gc.defaults() if len(gc.hooks) == 0 { + if err = gc.check(); err != nil { + return nil, err + } node, err = gc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -159,6 +160,9 @@ func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gc.check(); err != nil { + return nil, err + } gc.mutation = mutation node, err = gc.sqlSave(ctx) mutation.done = true @@ -183,11 +187,23 @@ func (gc *GroupCreate) SaveX(ctx context.Context) *Group { return v } -func (gc *GroupCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (gc *GroupCreate) defaults() { if _, ok := gc.mutation.Active(); !ok { v := group.DefaultActive gc.mutation.SetActive(v) } + if _, ok := gc.mutation.MaxUsers(); !ok { + v := group.DefaultMaxUsers + gc.mutation.SetMaxUsers(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (gc *GroupCreate) check() error { + if _, ok := gc.mutation.Active(); !ok { + return &ValidationError{Name: "active", err: errors.New("ent: missing required field \"active\"")} + } if _, ok := gc.mutation.Expire(); !ok { return &ValidationError{Name: "expire", err: errors.New("ent: missing required field \"expire\"")} } @@ -196,10 +212,6 @@ func (gc *GroupCreate) preSave() error { return &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} } } - if _, ok := gc.mutation.MaxUsers(); !ok { - v := group.DefaultMaxUsers - gc.mutation.SetMaxUsers(v) - } if v, ok := gc.mutation.MaxUsers(); ok { if err := group.MaxUsersValidator(v); err != nil { return &ValidationError{Name: "max_users", err: fmt.Errorf("ent: validator failed for field \"max_users\": %w", err)} @@ -376,14 +388,15 @@ func (gcb *GroupCreateBulk) Save(ctx context.Context) ([]*Group, error) { for i := range gcb.builders { func(i int, root context.Context) { builder := gcb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*GroupMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/group_update.go b/entc/integration/ent/group_update.go index 87d0b28a3..fd9024bad 100644 --- a/entc/integration/ent/group_update.go +++ b/entc/integration/ent/group_update.go @@ -241,30 +241,14 @@ func (gu *GroupUpdate) ClearInfo() *GroupUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (gu *GroupUpdate) Save(ctx context.Context) (int, error) { - if v, ok := gu.mutation.GetType(); ok { - if err := group.TypeValidator(v); err != nil { - return 0, &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} - } - } - if v, ok := gu.mutation.MaxUsers(); ok { - if err := group.MaxUsersValidator(v); err != nil { - return 0, &ValidationError{Name: "max_users", err: fmt.Errorf("ent: validator failed for field \"max_users\": %w", err)} - } - } - if v, ok := gu.mutation.Name(); ok { - if err := group.NameValidator(v); err != nil { - return 0, &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} - } - } - - if _, ok := gu.mutation.InfoID(); gu.mutation.InfoCleared() && !ok { - return 0, errors.New("ent: clearing a unique edge \"info\"") - } var ( err error affected int ) if len(gu.hooks) == 0 { + if err = gu.check(); err != nil { + return 0, err + } affected, err = gu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -272,6 +256,9 @@ func (gu *GroupUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gu.check(); err != nil { + return 0, err + } gu.mutation = mutation affected, err = gu.sqlSave(ctx) mutation.done = true @@ -309,6 +296,29 @@ func (gu *GroupUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (gu *GroupUpdate) check() error { + if v, ok := gu.mutation.GetType(); ok { + if err := group.TypeValidator(v); err != nil { + return &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} + } + } + if v, ok := gu.mutation.MaxUsers(); ok { + if err := group.MaxUsersValidator(v); err != nil { + return &ValidationError{Name: "max_users", err: fmt.Errorf("ent: validator failed for field \"max_users\": %w", err)} + } + } + if v, ok := gu.mutation.Name(); ok { + if err := group.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} + } + } + if _, ok := gu.mutation.InfoID(); gu.mutation.InfoCleared() && !ok { + return errors.New("ent: clearing a required unique edge \"info\"") + } + return nil +} + func (gu *GroupUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -801,30 +811,14 @@ func (guo *GroupUpdateOne) ClearInfo() *GroupUpdateOne { // Save executes the query and returns the updated entity. func (guo *GroupUpdateOne) Save(ctx context.Context) (*Group, error) { - if v, ok := guo.mutation.GetType(); ok { - if err := group.TypeValidator(v); err != nil { - return nil, &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} - } - } - if v, ok := guo.mutation.MaxUsers(); ok { - if err := group.MaxUsersValidator(v); err != nil { - return nil, &ValidationError{Name: "max_users", err: fmt.Errorf("ent: validator failed for field \"max_users\": %w", err)} - } - } - if v, ok := guo.mutation.Name(); ok { - if err := group.NameValidator(v); err != nil { - return nil, &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} - } - } - - if _, ok := guo.mutation.InfoID(); guo.mutation.InfoCleared() && !ok { - return nil, errors.New("ent: clearing a unique edge \"info\"") - } var ( err error node *Group ) if len(guo.hooks) == 0 { + if err = guo.check(); err != nil { + return nil, err + } node, err = guo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -832,6 +826,9 @@ func (guo *GroupUpdateOne) Save(ctx context.Context) (*Group, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = guo.check(); err != nil { + return nil, err + } guo.mutation = mutation node, err = guo.sqlSave(ctx) mutation.done = true @@ -869,6 +866,29 @@ func (guo *GroupUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (guo *GroupUpdateOne) check() error { + if v, ok := guo.mutation.GetType(); ok { + if err := group.TypeValidator(v); err != nil { + return &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} + } + } + if v, ok := guo.mutation.MaxUsers(); ok { + if err := group.MaxUsersValidator(v); err != nil { + return &ValidationError{Name: "max_users", err: fmt.Errorf("ent: validator failed for field \"max_users\": %w", err)} + } + } + if v, ok := guo.mutation.Name(); ok { + if err := group.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} + } + } + if _, ok := guo.mutation.InfoID(); guo.mutation.InfoCleared() && !ok { + return errors.New("ent: clearing a required unique edge \"info\"") + } + return nil +} + func (guo *GroupUpdateOne) sqlSave(ctx context.Context) (gr *Group, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/entc/integration/ent/groupinfo_create.go b/entc/integration/ent/groupinfo_create.go index b9d734dd8..3d3d9fdcb 100644 --- a/entc/integration/ent/groupinfo_create.go +++ b/entc/integration/ent/groupinfo_create.go @@ -66,14 +66,15 @@ func (gic *GroupInfoCreate) Mutation() *GroupInfoMutation { // Save creates the GroupInfo in the database. func (gic *GroupInfoCreate) Save(ctx context.Context) (*GroupInfo, error) { - if err := gic.preSave(); err != nil { - return nil, err - } var ( err error node *GroupInfo ) + gic.defaults() if len(gic.hooks) == 0 { + if err = gic.check(); err != nil { + return nil, err + } node, err = gic.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -81,6 +82,9 @@ func (gic *GroupInfoCreate) Save(ctx context.Context) (*GroupInfo, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gic.check(); err != nil { + return nil, err + } gic.mutation = mutation node, err = gic.sqlSave(ctx) mutation.done = true @@ -105,13 +109,21 @@ func (gic *GroupInfoCreate) SaveX(ctx context.Context) *GroupInfo { return v } -func (gic *GroupInfoCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (gic *GroupInfoCreate) defaults() { + if _, ok := gic.mutation.MaxUsers(); !ok { + v := groupinfo.DefaultMaxUsers + gic.mutation.SetMaxUsers(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (gic *GroupInfoCreate) check() error { if _, ok := gic.mutation.Desc(); !ok { return &ValidationError{Name: "desc", err: errors.New("ent: missing required field \"desc\"")} } if _, ok := gic.mutation.MaxUsers(); !ok { - v := groupinfo.DefaultMaxUsers - gic.mutation.SetMaxUsers(v) + return &ValidationError{Name: "max_users", err: errors.New("ent: missing required field \"max_users\"")} } return nil } @@ -192,14 +204,15 @@ func (gicb *GroupInfoCreateBulk) Save(ctx context.Context) ([]*GroupInfo, error) for i := range gicb.builders { func(i int, root context.Context) { builder := gicb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*GroupInfoMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/groupinfo_update.go b/entc/integration/ent/groupinfo_update.go index 7f06936b3..263532bd6 100644 --- a/entc/integration/ent/groupinfo_update.go +++ b/entc/integration/ent/groupinfo_update.go @@ -102,7 +102,6 @@ func (giu *GroupInfoUpdate) RemoveGroups(g ...*Group) *GroupInfoUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (giu *GroupInfoUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -333,7 +332,6 @@ func (giuo *GroupInfoUpdateOne) RemoveGroups(g ...*Group) *GroupInfoUpdateOne { // Save executes the query and returns the updated entity. func (giuo *GroupInfoUpdateOne) Save(ctx context.Context) (*GroupInfo, error) { - var ( err error node *GroupInfo diff --git a/entc/integration/ent/item_create.go b/entc/integration/ent/item_create.go index 14af271ba..01371ef4c 100644 --- a/entc/integration/ent/item_create.go +++ b/entc/integration/ent/item_create.go @@ -29,14 +29,14 @@ func (ic *ItemCreate) Mutation() *ItemMutation { // Save creates the Item in the database. func (ic *ItemCreate) Save(ctx context.Context) (*Item, error) { - if err := ic.preSave(); err != nil { - return nil, err - } var ( err error node *Item ) if len(ic.hooks) == 0 { + if err = ic.check(); err != nil { + return nil, err + } node, err = ic.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -44,6 +44,9 @@ func (ic *ItemCreate) Save(ctx context.Context) (*Item, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ic.check(); err != nil { + return nil, err + } ic.mutation = mutation node, err = ic.sqlSave(ctx) mutation.done = true @@ -68,7 +71,8 @@ func (ic *ItemCreate) SaveX(ctx context.Context) *Item { return v } -func (ic *ItemCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (ic *ItemCreate) check() error { return nil } @@ -114,13 +118,13 @@ func (icb *ItemCreateBulk) Save(ctx context.Context) ([]*Item, error) { func(i int, root context.Context) { builder := icb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*ItemMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/node_create.go b/entc/integration/ent/node_create.go index 26bc84e2e..23c68a489 100644 --- a/entc/integration/ent/node_create.go +++ b/entc/integration/ent/node_create.go @@ -81,14 +81,14 @@ func (nc *NodeCreate) Mutation() *NodeMutation { // Save creates the Node in the database. func (nc *NodeCreate) Save(ctx context.Context) (*Node, error) { - if err := nc.preSave(); err != nil { - return nil, err - } var ( err error node *Node ) if len(nc.hooks) == 0 { + if err = nc.check(); err != nil { + return nil, err + } node, err = nc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -96,6 +96,9 @@ func (nc *NodeCreate) Save(ctx context.Context) (*Node, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = nc.check(); err != nil { + return nil, err + } nc.mutation = mutation node, err = nc.sqlSave(ctx) mutation.done = true @@ -120,7 +123,8 @@ func (nc *NodeCreate) SaveX(ctx context.Context) *Node { return v } -func (nc *NodeCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (nc *NodeCreate) check() error { return nil } @@ -212,13 +216,13 @@ func (ncb *NodeCreateBulk) Save(ctx context.Context) ([]*Node, error) { func(i int, root context.Context) { builder := ncb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*NodeMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/node_update.go b/entc/integration/ent/node_update.go index 85751d1ae..825ffe9fa 100644 --- a/entc/integration/ent/node_update.go +++ b/entc/integration/ent/node_update.go @@ -115,7 +115,6 @@ func (nu *NodeUpdate) ClearNext() *NodeUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (nu *NodeUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -375,7 +374,6 @@ func (nuo *NodeUpdateOne) ClearNext() *NodeUpdateOne { // Save executes the query and returns the updated entity. func (nuo *NodeUpdateOne) Save(ctx context.Context) (*Node, error) { - var ( err error node *Node diff --git a/entc/integration/ent/pet_create.go b/entc/integration/ent/pet_create.go index d8a2348df..3ddb17c41 100644 --- a/entc/integration/ent/pet_create.go +++ b/entc/integration/ent/pet_create.go @@ -75,14 +75,14 @@ func (pc *PetCreate) Mutation() *PetMutation { // Save creates the Pet in the database. func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { - if err := pc.preSave(); err != nil { - return nil, err - } var ( err error node *Pet ) if len(pc.hooks) == 0 { + if err = pc.check(); err != nil { + return nil, err + } node, err = pc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -90,6 +90,9 @@ func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = pc.check(); err != nil { + return nil, err + } pc.mutation = mutation node, err = pc.sqlSave(ctx) mutation.done = true @@ -114,7 +117,8 @@ func (pc *PetCreate) SaveX(ctx context.Context) *Pet { return v } -func (pc *PetCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (pc *PetCreate) check() error { if _, ok := pc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -209,13 +213,13 @@ func (pcb *PetCreateBulk) Save(ctx context.Context) ([]*Pet, error) { func(i int, root context.Context) { builder := pcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*PetMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/pet_update.go b/entc/integration/ent/pet_update.go index d71c12160..dcc28ab29 100644 --- a/entc/integration/ent/pet_update.go +++ b/entc/integration/ent/pet_update.go @@ -95,7 +95,6 @@ func (pu *PetUpdate) ClearOwner() *PetUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (pu *PetUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -321,7 +320,6 @@ func (puo *PetUpdateOne) ClearOwner() *PetUpdateOne { // Save executes the query and returns the updated entity. func (puo *PetUpdateOne) Save(ctx context.Context) (*Pet, error) { - var ( err error node *Pet diff --git a/entc/integration/ent/spec_create.go b/entc/integration/ent/spec_create.go index 3db702cab..db164dcb9 100644 --- a/entc/integration/ent/spec_create.go +++ b/entc/integration/ent/spec_create.go @@ -45,14 +45,14 @@ func (sc *SpecCreate) Mutation() *SpecMutation { // Save creates the Spec in the database. func (sc *SpecCreate) Save(ctx context.Context) (*Spec, error) { - if err := sc.preSave(); err != nil { - return nil, err - } var ( err error node *Spec ) if len(sc.hooks) == 0 { + if err = sc.check(); err != nil { + return nil, err + } node, err = sc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -60,6 +60,9 @@ func (sc *SpecCreate) Save(ctx context.Context) (*Spec, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = sc.check(); err != nil { + return nil, err + } sc.mutation = mutation node, err = sc.sqlSave(ctx) mutation.done = true @@ -84,7 +87,8 @@ func (sc *SpecCreate) SaveX(ctx context.Context) *Spec { return v } -func (sc *SpecCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (sc *SpecCreate) check() error { return nil } @@ -149,13 +153,13 @@ func (scb *SpecCreateBulk) Save(ctx context.Context) ([]*Spec, error) { func(i int, root context.Context) { builder := scb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*SpecMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/spec_update.go b/entc/integration/ent/spec_update.go index 407bf6eb3..70264d50a 100644 --- a/entc/integration/ent/spec_update.go +++ b/entc/integration/ent/spec_update.go @@ -75,7 +75,6 @@ func (su *SpecUpdate) RemoveCard(c ...*Card) *SpecUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (su *SpecUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -258,7 +257,6 @@ func (suo *SpecUpdateOne) RemoveCard(c ...*Card) *SpecUpdateOne { // Save executes the query and returns the updated entity. func (suo *SpecUpdateOne) Save(ctx context.Context) (*Spec, error) { - var ( err error node *Spec diff --git a/entc/integration/ent/task_create.go b/entc/integration/ent/task_create.go index 9256c212f..c8ab2c362 100644 --- a/entc/integration/ent/task_create.go +++ b/entc/integration/ent/task_create.go @@ -8,6 +8,7 @@ package ent import ( "context" + "errors" "fmt" "github.com/facebook/ent/dialect/sql/sqlgraph" @@ -44,14 +45,15 @@ func (tc *TaskCreate) Mutation() *TaskMutation { // Save creates the Task in the database. func (tc *TaskCreate) Save(ctx context.Context) (*Task, error) { - if err := tc.preSave(); err != nil { - return nil, err - } var ( err error node *Task ) + tc.defaults() if len(tc.hooks) == 0 { + if err = tc.check(); err != nil { + return nil, err + } node, err = tc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -59,6 +61,9 @@ func (tc *TaskCreate) Save(ctx context.Context) (*Task, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = tc.check(); err != nil { + return nil, err + } tc.mutation = mutation node, err = tc.sqlSave(ctx) mutation.done = true @@ -83,11 +88,19 @@ func (tc *TaskCreate) SaveX(ctx context.Context) *Task { return v } -func (tc *TaskCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (tc *TaskCreate) defaults() { if _, ok := tc.mutation.Priority(); !ok { v := task.DefaultPriority tc.mutation.SetPriority(v) } +} + +// check runs all checks and user-defined validators on the builder. +func (tc *TaskCreate) check() error { + if _, ok := tc.mutation.Priority(); !ok { + return &ValidationError{Name: "priority", err: errors.New("ent: missing required field \"priority\"")} + } if v, ok := tc.mutation.Priority(); ok { if err := task.PriorityValidator(int(v)); err != nil { return &ValidationError{Name: "priority", err: fmt.Errorf("ent: validator failed for field \"priority\": %w", err)} @@ -145,14 +158,15 @@ func (tcb *TaskCreateBulk) Save(ctx context.Context) ([]*Task, error) { for i := range tcb.builders { func(i int, root context.Context) { builder := tcb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*TaskMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/task_update.go b/entc/integration/ent/task_update.go index ee86c4325..9ba74a125 100644 --- a/entc/integration/ent/task_update.go +++ b/entc/integration/ent/task_update.go @@ -60,16 +60,14 @@ func (tu *TaskUpdate) Mutation() *TaskMutation { // Save executes the query and returns the number of rows/vertices matched by this operation. func (tu *TaskUpdate) Save(ctx context.Context) (int, error) { - if v, ok := tu.mutation.Priority(); ok { - if err := task.PriorityValidator(int(v)); err != nil { - return 0, &ValidationError{Name: "priority", err: fmt.Errorf("ent: validator failed for field \"priority\": %w", err)} - } - } var ( err error affected int ) if len(tu.hooks) == 0 { + if err = tu.check(); err != nil { + return 0, err + } affected, err = tu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -77,6 +75,9 @@ func (tu *TaskUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = tu.check(); err != nil { + return 0, err + } tu.mutation = mutation affected, err = tu.sqlSave(ctx) mutation.done = true @@ -114,6 +115,16 @@ func (tu *TaskUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (tu *TaskUpdate) check() error { + if v, ok := tu.mutation.Priority(); ok { + if err := task.PriorityValidator(int(v)); err != nil { + return &ValidationError{Name: "priority", err: fmt.Errorf("ent: validator failed for field \"priority\": %w", err)} + } + } + return nil +} + func (tu *TaskUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -192,16 +203,14 @@ func (tuo *TaskUpdateOne) Mutation() *TaskMutation { // Save executes the query and returns the updated entity. func (tuo *TaskUpdateOne) Save(ctx context.Context) (*Task, error) { - if v, ok := tuo.mutation.Priority(); ok { - if err := task.PriorityValidator(int(v)); err != nil { - return nil, &ValidationError{Name: "priority", err: fmt.Errorf("ent: validator failed for field \"priority\": %w", err)} - } - } var ( err error node *Task ) if len(tuo.hooks) == 0 { + if err = tuo.check(); err != nil { + return nil, err + } node, err = tuo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -209,6 +218,9 @@ func (tuo *TaskUpdateOne) Save(ctx context.Context) (*Task, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = tuo.check(); err != nil { + return nil, err + } tuo.mutation = mutation node, err = tuo.sqlSave(ctx) mutation.done = true @@ -246,6 +258,16 @@ func (tuo *TaskUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (tuo *TaskUpdateOne) check() error { + if v, ok := tuo.mutation.Priority(); ok { + if err := task.PriorityValidator(int(v)); err != nil { + return &ValidationError{Name: "priority", err: fmt.Errorf("ent: validator failed for field \"priority\": %w", err)} + } + } + return nil +} + func (tuo *TaskUpdateOne) sqlSave(ctx context.Context) (t *Task, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/entc/integration/ent/user_create.go b/entc/integration/ent/user_create.go index 3f2185ee0..33bdc4f16 100644 --- a/entc/integration/ent/user_create.go +++ b/entc/integration/ent/user_create.go @@ -325,14 +325,15 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) + uc.defaults() if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -340,6 +341,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -364,7 +368,20 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (uc *UserCreate) defaults() { + if _, ok := uc.mutation.Last(); !ok { + v := user.DefaultLast + uc.mutation.SetLast(v) + } + if _, ok := uc.mutation.Role(); !ok { + v := user.DefaultRole + uc.mutation.SetRole(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if v, ok := uc.mutation.OptionalInt(); ok { if err := user.OptionalIntValidator(v); err != nil { return &ValidationError{Name: "optional_int", err: fmt.Errorf("ent: validator failed for field \"optional_int\": %w", err)} @@ -377,12 +394,10 @@ func (uc *UserCreate) preSave() error { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } if _, ok := uc.mutation.Last(); !ok { - v := user.DefaultLast - uc.mutation.SetLast(v) + return &ValidationError{Name: "last", err: errors.New("ent: missing required field \"last\"")} } if _, ok := uc.mutation.Role(); !ok { - v := user.DefaultRole - uc.mutation.SetRole(v) + return &ValidationError{Name: "role", err: errors.New("ent: missing required field \"role\"")} } if v, ok := uc.mutation.Role(); ok { if err := user.RoleValidator(v); err != nil { @@ -714,14 +729,15 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { for i := range ucb.builders { func(i int, root context.Context) { builder := ucb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/ent/user_update.go b/entc/integration/ent/user_update.go index 8e5633249..74bc31ee6 100644 --- a/entc/integration/ent/user_update.go +++ b/entc/integration/ent/user_update.go @@ -548,22 +548,14 @@ func (uu *UserUpdate) ClearParent() *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - if v, ok := uu.mutation.OptionalInt(); ok { - if err := user.OptionalIntValidator(v); err != nil { - return 0, &ValidationError{Name: "optional_int", err: fmt.Errorf("ent: validator failed for field \"optional_int\": %w", err)} - } - } - if v, ok := uu.mutation.Role(); ok { - if err := user.RoleValidator(v); err != nil { - return 0, &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} - } - } - var ( err error affected int ) if len(uu.hooks) == 0 { + if err = uu.check(); err != nil { + return 0, err + } affected, err = uu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -571,6 +563,9 @@ func (uu *UserUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uu.check(); err != nil { + return 0, err + } uu.mutation = mutation affected, err = uu.sqlSave(ctx) mutation.done = true @@ -608,6 +603,21 @@ func (uu *UserUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (uu *UserUpdate) check() error { + if v, ok := uu.mutation.OptionalInt(); ok { + if err := user.OptionalIntValidator(v); err != nil { + return &ValidationError{Name: "optional_int", err: fmt.Errorf("ent: validator failed for field \"optional_int\": %w", err)} + } + } + if v, ok := uu.mutation.Role(); ok { + if err := user.RoleValidator(v); err != nil { + return &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} + } + } + return nil +} + func (uu *UserUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -1782,22 +1792,14 @@ func (uuo *UserUpdateOne) ClearParent() *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - if v, ok := uuo.mutation.OptionalInt(); ok { - if err := user.OptionalIntValidator(v); err != nil { - return nil, &ValidationError{Name: "optional_int", err: fmt.Errorf("ent: validator failed for field \"optional_int\": %w", err)} - } - } - if v, ok := uuo.mutation.Role(); ok { - if err := user.RoleValidator(v); err != nil { - return nil, &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} - } - } - var ( err error node *User ) if len(uuo.hooks) == 0 { + if err = uuo.check(); err != nil { + return nil, err + } node, err = uuo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -1805,6 +1807,9 @@ func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uuo.check(); err != nil { + return nil, err + } uuo.mutation = mutation node, err = uuo.sqlSave(ctx) mutation.done = true @@ -1842,6 +1847,21 @@ func (uuo *UserUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (uuo *UserUpdateOne) check() error { + if v, ok := uuo.mutation.OptionalInt(); ok { + if err := user.OptionalIntValidator(v); err != nil { + return &ValidationError{Name: "optional_int", err: fmt.Errorf("ent: validator failed for field \"optional_int\": %w", err)} + } + } + if v, ok := uuo.mutation.Role(); ok { + if err := user.RoleValidator(v); err != nil { + return &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} + } + } + return nil +} + func (uuo *UserUpdateOne) sqlSave(ctx context.Context) (u *User, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/entc/integration/gremlin/ent/card_create.go b/entc/integration/gremlin/ent/card_create.go index b7f9ac1d7..5ebf7a6c6 100644 --- a/entc/integration/gremlin/ent/card_create.go +++ b/entc/integration/gremlin/ent/card_create.go @@ -118,14 +118,15 @@ func (cc *CardCreate) Mutation() *CardMutation { // Save creates the Card in the database. func (cc *CardCreate) Save(ctx context.Context) (*Card, error) { - if err := cc.preSave(); err != nil { - return nil, err - } var ( err error node *Card ) + cc.defaults() if len(cc.hooks) == 0 { + if err = cc.check(); err != nil { + return nil, err + } node, err = cc.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -133,6 +134,9 @@ func (cc *CardCreate) Save(ctx context.Context) (*Card, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cc.check(); err != nil { + return nil, err + } cc.mutation = mutation node, err = cc.gremlinSave(ctx) mutation.done = true @@ -157,7 +161,8 @@ func (cc *CardCreate) SaveX(ctx context.Context) *Card { return v } -func (cc *CardCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (cc *CardCreate) defaults() { if _, ok := cc.mutation.CreateTime(); !ok { v := card.DefaultCreateTime() cc.mutation.SetCreateTime(v) @@ -166,6 +171,16 @@ func (cc *CardCreate) preSave() error { v := card.DefaultUpdateTime() cc.mutation.SetUpdateTime(v) } +} + +// check runs all checks and user-defined validators on the builder. +func (cc *CardCreate) check() error { + if _, ok := cc.mutation.CreateTime(); !ok { + return &ValidationError{Name: "create_time", err: errors.New("ent: missing required field \"create_time\"")} + } + if _, ok := cc.mutation.UpdateTime(); !ok { + return &ValidationError{Name: "update_time", err: errors.New("ent: missing required field \"update_time\"")} + } if _, ok := cc.mutation.Number(); !ok { return &ValidationError{Name: "number", err: errors.New("ent: missing required field \"number\"")} } diff --git a/entc/integration/gremlin/ent/card_update.go b/entc/integration/gremlin/ent/card_update.go index 13a676057..1ca1ab3e7 100644 --- a/entc/integration/gremlin/ent/card_update.go +++ b/entc/integration/gremlin/ent/card_update.go @@ -123,21 +123,15 @@ func (cu *CardUpdate) RemoveSpec(s ...*Spec) *CardUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (cu *CardUpdate) Save(ctx context.Context) (int, error) { - if _, ok := cu.mutation.UpdateTime(); !ok { - v := card.UpdateDefaultUpdateTime() - cu.mutation.SetUpdateTime(v) - } - if v, ok := cu.mutation.Name(); ok { - if err := card.NameValidator(v); err != nil { - return 0, &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} - } - } - var ( err error affected int ) + cu.defaults() if len(cu.hooks) == 0 { + if err = cu.check(); err != nil { + return 0, err + } affected, err = cu.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -145,6 +139,9 @@ func (cu *CardUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cu.check(); err != nil { + return 0, err + } cu.mutation = mutation affected, err = cu.gremlinSave(ctx) mutation.done = true @@ -182,6 +179,24 @@ func (cu *CardUpdate) ExecX(ctx context.Context) { } } +// defaults sets the default values of the builder before save. +func (cu *CardUpdate) defaults() { + if _, ok := cu.mutation.UpdateTime(); !ok { + v := card.UpdateDefaultUpdateTime() + cu.mutation.SetUpdateTime(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (cu *CardUpdate) check() error { + if v, ok := cu.mutation.Name(); ok { + if err := card.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} + } + } + return nil +} + func (cu *CardUpdate) gremlinSave(ctx context.Context) (int, error) { res := &gremlin.Response{} query, bindings := cu.gremlin().Query() @@ -351,21 +366,15 @@ func (cuo *CardUpdateOne) RemoveSpec(s ...*Spec) *CardUpdateOne { // Save executes the query and returns the updated entity. func (cuo *CardUpdateOne) Save(ctx context.Context) (*Card, error) { - if _, ok := cuo.mutation.UpdateTime(); !ok { - v := card.UpdateDefaultUpdateTime() - cuo.mutation.SetUpdateTime(v) - } - if v, ok := cuo.mutation.Name(); ok { - if err := card.NameValidator(v); err != nil { - return nil, &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} - } - } - var ( err error node *Card ) + cuo.defaults() if len(cuo.hooks) == 0 { + if err = cuo.check(); err != nil { + return nil, err + } node, err = cuo.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -373,6 +382,9 @@ func (cuo *CardUpdateOne) Save(ctx context.Context) (*Card, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cuo.check(); err != nil { + return nil, err + } cuo.mutation = mutation node, err = cuo.gremlinSave(ctx) mutation.done = true @@ -410,6 +422,24 @@ func (cuo *CardUpdateOne) ExecX(ctx context.Context) { } } +// defaults sets the default values of the builder before save. +func (cuo *CardUpdateOne) defaults() { + if _, ok := cuo.mutation.UpdateTime(); !ok { + v := card.UpdateDefaultUpdateTime() + cuo.mutation.SetUpdateTime(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (cuo *CardUpdateOne) check() error { + if v, ok := cuo.mutation.Name(); ok { + if err := card.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} + } + } + return nil +} + func (cuo *CardUpdateOne) gremlinSave(ctx context.Context) (*Card, error) { res := &gremlin.Response{} id, ok := cuo.mutation.ID() diff --git a/entc/integration/gremlin/ent/comment_create.go b/entc/integration/gremlin/ent/comment_create.go index 4b407cb80..27ed36187 100644 --- a/entc/integration/gremlin/ent/comment_create.go +++ b/entc/integration/gremlin/ent/comment_create.go @@ -59,14 +59,14 @@ func (cc *CommentCreate) Mutation() *CommentMutation { // Save creates the Comment in the database. func (cc *CommentCreate) Save(ctx context.Context) (*Comment, error) { - if err := cc.preSave(); err != nil { - return nil, err - } var ( err error node *Comment ) if len(cc.hooks) == 0 { + if err = cc.check(); err != nil { + return nil, err + } node, err = cc.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -74,6 +74,9 @@ func (cc *CommentCreate) Save(ctx context.Context) (*Comment, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cc.check(); err != nil { + return nil, err + } cc.mutation = mutation node, err = cc.gremlinSave(ctx) mutation.done = true @@ -98,7 +101,8 @@ func (cc *CommentCreate) SaveX(ctx context.Context) *Comment { return v } -func (cc *CommentCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (cc *CommentCreate) check() error { if _, ok := cc.mutation.UniqueInt(); !ok { return &ValidationError{Name: "unique_int", err: errors.New("ent: missing required field \"unique_int\"")} } diff --git a/entc/integration/gremlin/ent/fieldtype_create.go b/entc/integration/gremlin/ent/fieldtype_create.go index 07c152028..05884cc14 100644 --- a/entc/integration/gremlin/ent/fieldtype_create.go +++ b/entc/integration/gremlin/ent/fieldtype_create.go @@ -555,14 +555,15 @@ func (ftc *FieldTypeCreate) Mutation() *FieldTypeMutation { // Save creates the FieldType in the database. func (ftc *FieldTypeCreate) Save(ctx context.Context) (*FieldType, error) { - if err := ftc.preSave(); err != nil { - return nil, err - } var ( err error node *FieldType ) + ftc.defaults() if len(ftc.hooks) == 0 { + if err = ftc.check(); err != nil { + return nil, err + } node, err = ftc.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -570,6 +571,9 @@ func (ftc *FieldTypeCreate) Save(ctx context.Context) (*FieldType, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ftc.check(); err != nil { + return nil, err + } ftc.mutation = mutation node, err = ftc.gremlinSave(ctx) mutation.done = true @@ -594,7 +598,16 @@ func (ftc *FieldTypeCreate) SaveX(ctx context.Context) *FieldType { return v } -func (ftc *FieldTypeCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (ftc *FieldTypeCreate) defaults() { + if _, ok := ftc.mutation.Role(); !ok { + v := fieldtype.DefaultRole + ftc.mutation.SetRole(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (ftc *FieldTypeCreate) check() error { if _, ok := ftc.mutation.Int(); !ok { return &ValidationError{Name: "int", err: errors.New("ent: missing required field \"int\"")} } @@ -631,8 +644,7 @@ func (ftc *FieldTypeCreate) preSave() error { } } if _, ok := ftc.mutation.Role(); !ok { - v := fieldtype.DefaultRole - ftc.mutation.SetRole(v) + return &ValidationError{Name: "role", err: errors.New("ent: missing required field \"role\"")} } if v, ok := ftc.mutation.Role(); ok { if err := fieldtype.RoleValidator(v); err != nil { diff --git a/entc/integration/gremlin/ent/fieldtype_update.go b/entc/integration/gremlin/ent/fieldtype_update.go index d206b3466..9dc55a103 100644 --- a/entc/integration/gremlin/ent/fieldtype_update.go +++ b/entc/integration/gremlin/ent/fieldtype_update.go @@ -1002,36 +1002,14 @@ func (ftu *FieldTypeUpdate) Mutation() *FieldTypeMutation { // Save executes the query and returns the number of rows/vertices matched by this operation. func (ftu *FieldTypeUpdate) Save(ctx context.Context) (int, error) { - if v, ok := ftu.mutation.ValidateOptionalInt32(); ok { - if err := fieldtype.ValidateOptionalInt32Validator(v); err != nil { - return 0, &ValidationError{Name: "validate_optional_int32", err: fmt.Errorf("ent: validator failed for field \"validate_optional_int32\": %w", err)} - } - } - if v, ok := ftu.mutation.State(); ok { - if err := fieldtype.StateValidator(v); err != nil { - return 0, &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} - } - } - if v, ok := ftu.mutation.Ndir(); ok { - if err := fieldtype.NdirValidator(string(v)); err != nil { - return 0, &ValidationError{Name: "ndir", err: fmt.Errorf("ent: validator failed for field \"ndir\": %w", err)} - } - } - if v, ok := ftu.mutation.Link(); ok { - if err := fieldtype.LinkValidator(v.String()); err != nil { - return 0, &ValidationError{Name: "link", err: fmt.Errorf("ent: validator failed for field \"link\": %w", err)} - } - } - if v, ok := ftu.mutation.Role(); ok { - if err := fieldtype.RoleValidator(v); err != nil { - return 0, &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} - } - } var ( err error affected int ) if len(ftu.hooks) == 0 { + if err = ftu.check(); err != nil { + return 0, err + } affected, err = ftu.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -1039,6 +1017,9 @@ func (ftu *FieldTypeUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ftu.check(); err != nil { + return 0, err + } ftu.mutation = mutation affected, err = ftu.gremlinSave(ctx) mutation.done = true @@ -1076,6 +1057,36 @@ func (ftu *FieldTypeUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (ftu *FieldTypeUpdate) check() error { + if v, ok := ftu.mutation.ValidateOptionalInt32(); ok { + if err := fieldtype.ValidateOptionalInt32Validator(v); err != nil { + return &ValidationError{Name: "validate_optional_int32", err: fmt.Errorf("ent: validator failed for field \"validate_optional_int32\": %w", err)} + } + } + if v, ok := ftu.mutation.State(); ok { + if err := fieldtype.StateValidator(v); err != nil { + return &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} + } + } + if v, ok := ftu.mutation.Ndir(); ok { + if err := fieldtype.NdirValidator(string(v)); err != nil { + return &ValidationError{Name: "ndir", err: fmt.Errorf("ent: validator failed for field \"ndir\": %w", err)} + } + } + if v, ok := ftu.mutation.Link(); ok { + if err := fieldtype.LinkValidator(v.String()); err != nil { + return &ValidationError{Name: "link", err: fmt.Errorf("ent: validator failed for field \"link\": %w", err)} + } + } + if v, ok := ftu.mutation.Role(); ok { + if err := fieldtype.RoleValidator(v); err != nil { + return &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} + } + } + return nil +} + func (ftu *FieldTypeUpdate) gremlinSave(ctx context.Context) (int, error) { res := &gremlin.Response{} query, bindings := ftu.gremlin().Query() @@ -2415,36 +2426,14 @@ func (ftuo *FieldTypeUpdateOne) Mutation() *FieldTypeMutation { // Save executes the query and returns the updated entity. func (ftuo *FieldTypeUpdateOne) Save(ctx context.Context) (*FieldType, error) { - if v, ok := ftuo.mutation.ValidateOptionalInt32(); ok { - if err := fieldtype.ValidateOptionalInt32Validator(v); err != nil { - return nil, &ValidationError{Name: "validate_optional_int32", err: fmt.Errorf("ent: validator failed for field \"validate_optional_int32\": %w", err)} - } - } - if v, ok := ftuo.mutation.State(); ok { - if err := fieldtype.StateValidator(v); err != nil { - return nil, &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} - } - } - if v, ok := ftuo.mutation.Ndir(); ok { - if err := fieldtype.NdirValidator(string(v)); err != nil { - return nil, &ValidationError{Name: "ndir", err: fmt.Errorf("ent: validator failed for field \"ndir\": %w", err)} - } - } - if v, ok := ftuo.mutation.Link(); ok { - if err := fieldtype.LinkValidator(v.String()); err != nil { - return nil, &ValidationError{Name: "link", err: fmt.Errorf("ent: validator failed for field \"link\": %w", err)} - } - } - if v, ok := ftuo.mutation.Role(); ok { - if err := fieldtype.RoleValidator(v); err != nil { - return nil, &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} - } - } var ( err error node *FieldType ) if len(ftuo.hooks) == 0 { + if err = ftuo.check(); err != nil { + return nil, err + } node, err = ftuo.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -2452,6 +2441,9 @@ func (ftuo *FieldTypeUpdateOne) Save(ctx context.Context) (*FieldType, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ftuo.check(); err != nil { + return nil, err + } ftuo.mutation = mutation node, err = ftuo.gremlinSave(ctx) mutation.done = true @@ -2489,6 +2481,36 @@ func (ftuo *FieldTypeUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (ftuo *FieldTypeUpdateOne) check() error { + if v, ok := ftuo.mutation.ValidateOptionalInt32(); ok { + if err := fieldtype.ValidateOptionalInt32Validator(v); err != nil { + return &ValidationError{Name: "validate_optional_int32", err: fmt.Errorf("ent: validator failed for field \"validate_optional_int32\": %w", err)} + } + } + if v, ok := ftuo.mutation.State(); ok { + if err := fieldtype.StateValidator(v); err != nil { + return &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} + } + } + if v, ok := ftuo.mutation.Ndir(); ok { + if err := fieldtype.NdirValidator(string(v)); err != nil { + return &ValidationError{Name: "ndir", err: fmt.Errorf("ent: validator failed for field \"ndir\": %w", err)} + } + } + if v, ok := ftuo.mutation.Link(); ok { + if err := fieldtype.LinkValidator(v.String()); err != nil { + return &ValidationError{Name: "link", err: fmt.Errorf("ent: validator failed for field \"link\": %w", err)} + } + } + if v, ok := ftuo.mutation.Role(); ok { + if err := fieldtype.RoleValidator(v); err != nil { + return &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} + } + } + return nil +} + func (ftuo *FieldTypeUpdateOne) gremlinSave(ctx context.Context) (*FieldType, error) { res := &gremlin.Response{} id, ok := ftuo.mutation.ID() diff --git a/entc/integration/gremlin/ent/file_create.go b/entc/integration/gremlin/ent/file_create.go index b09703273..59935125c 100644 --- a/entc/integration/gremlin/ent/file_create.go +++ b/entc/integration/gremlin/ent/file_create.go @@ -136,14 +136,15 @@ func (fc *FileCreate) Mutation() *FileMutation { // Save creates the File in the database. func (fc *FileCreate) Save(ctx context.Context) (*File, error) { - if err := fc.preSave(); err != nil { - return nil, err - } var ( err error node *File ) + fc.defaults() if len(fc.hooks) == 0 { + if err = fc.check(); err != nil { + return nil, err + } node, err = fc.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -151,6 +152,9 @@ func (fc *FileCreate) Save(ctx context.Context) (*File, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = fc.check(); err != nil { + return nil, err + } fc.mutation = mutation node, err = fc.gremlinSave(ctx) mutation.done = true @@ -175,11 +179,19 @@ func (fc *FileCreate) SaveX(ctx context.Context) *File { return v } -func (fc *FileCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (fc *FileCreate) defaults() { if _, ok := fc.mutation.Size(); !ok { v := file.DefaultSize fc.mutation.SetSize(v) } +} + +// check runs all checks and user-defined validators on the builder. +func (fc *FileCreate) check() error { + if _, ok := fc.mutation.Size(); !ok { + return &ValidationError{Name: "size", err: errors.New("ent: missing required field \"size\"")} + } if v, ok := fc.mutation.Size(); ok { if err := file.SizeValidator(v); err != nil { return &ValidationError{Name: "size", err: fmt.Errorf("ent: validator failed for field \"size\": %w", err)} diff --git a/entc/integration/gremlin/ent/file_update.go b/entc/integration/gremlin/ent/file_update.go index e8cd58f4d..59a416e95 100644 --- a/entc/integration/gremlin/ent/file_update.go +++ b/entc/integration/gremlin/ent/file_update.go @@ -195,17 +195,14 @@ func (fu *FileUpdate) RemoveField(f ...*FieldType) *FileUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (fu *FileUpdate) Save(ctx context.Context) (int, error) { - if v, ok := fu.mutation.Size(); ok { - if err := file.SizeValidator(v); err != nil { - return 0, &ValidationError{Name: "size", err: fmt.Errorf("ent: validator failed for field \"size\": %w", err)} - } - } - var ( err error affected int ) if len(fu.hooks) == 0 { + if err = fu.check(); err != nil { + return 0, err + } affected, err = fu.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -213,6 +210,9 @@ func (fu *FileUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = fu.check(); err != nil { + return 0, err + } fu.mutation = mutation affected, err = fu.gremlinSave(ctx) mutation.done = true @@ -250,6 +250,16 @@ func (fu *FileUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (fu *FileUpdate) check() error { + if v, ok := fu.mutation.Size(); ok { + if err := file.SizeValidator(v); err != nil { + return &ValidationError{Name: "size", err: fmt.Errorf("ent: validator failed for field \"size\": %w", err)} + } + } + return nil +} + func (fu *FileUpdate) gremlinSave(ctx context.Context) (int, error) { res := &gremlin.Response{} query, bindings := fu.gremlin().Query() @@ -510,17 +520,14 @@ func (fuo *FileUpdateOne) RemoveField(f ...*FieldType) *FileUpdateOne { // Save executes the query and returns the updated entity. func (fuo *FileUpdateOne) Save(ctx context.Context) (*File, error) { - if v, ok := fuo.mutation.Size(); ok { - if err := file.SizeValidator(v); err != nil { - return nil, &ValidationError{Name: "size", err: fmt.Errorf("ent: validator failed for field \"size\": %w", err)} - } - } - var ( err error node *File ) if len(fuo.hooks) == 0 { + if err = fuo.check(); err != nil { + return nil, err + } node, err = fuo.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -528,6 +535,9 @@ func (fuo *FileUpdateOne) Save(ctx context.Context) (*File, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = fuo.check(); err != nil { + return nil, err + } fuo.mutation = mutation node, err = fuo.gremlinSave(ctx) mutation.done = true @@ -565,6 +575,16 @@ func (fuo *FileUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (fuo *FileUpdateOne) check() error { + if v, ok := fuo.mutation.Size(); ok { + if err := file.SizeValidator(v); err != nil { + return &ValidationError{Name: "size", err: fmt.Errorf("ent: validator failed for field \"size\": %w", err)} + } + } + return nil +} + func (fuo *FileUpdateOne) gremlinSave(ctx context.Context) (*File, error) { res := &gremlin.Response{} id, ok := fuo.mutation.ID() diff --git a/entc/integration/gremlin/ent/filetype_create.go b/entc/integration/gremlin/ent/filetype_create.go index 233390f7b..e2339eb26 100644 --- a/entc/integration/gremlin/ent/filetype_create.go +++ b/entc/integration/gremlin/ent/filetype_create.go @@ -82,14 +82,15 @@ func (ftc *FileTypeCreate) Mutation() *FileTypeMutation { // Save creates the FileType in the database. func (ftc *FileTypeCreate) Save(ctx context.Context) (*FileType, error) { - if err := ftc.preSave(); err != nil { - return nil, err - } var ( err error node *FileType ) + ftc.defaults() if len(ftc.hooks) == 0 { + if err = ftc.check(); err != nil { + return nil, err + } node, err = ftc.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -97,6 +98,9 @@ func (ftc *FileTypeCreate) Save(ctx context.Context) (*FileType, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ftc.check(); err != nil { + return nil, err + } ftc.mutation = mutation node, err = ftc.gremlinSave(ctx) mutation.done = true @@ -121,13 +125,25 @@ func (ftc *FileTypeCreate) SaveX(ctx context.Context) *FileType { return v } -func (ftc *FileTypeCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (ftc *FileTypeCreate) defaults() { + if _, ok := ftc.mutation.GetType(); !ok { + v := filetype.DefaultType + ftc.mutation.SetType(v) + } + if _, ok := ftc.mutation.State(); !ok { + v := filetype.DefaultState + ftc.mutation.SetState(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (ftc *FileTypeCreate) check() error { if _, ok := ftc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } if _, ok := ftc.mutation.GetType(); !ok { - v := filetype.DefaultType - ftc.mutation.SetType(v) + return &ValidationError{Name: "type", err: errors.New("ent: missing required field \"type\"")} } if v, ok := ftc.mutation.GetType(); ok { if err := filetype.TypeValidator(v); err != nil { @@ -135,8 +151,7 @@ func (ftc *FileTypeCreate) preSave() error { } } if _, ok := ftc.mutation.State(); !ok { - v := filetype.DefaultState - ftc.mutation.SetState(v) + return &ValidationError{Name: "state", err: errors.New("ent: missing required field \"state\"")} } if v, ok := ftc.mutation.State(); ok { if err := filetype.StateValidator(v); err != nil { diff --git a/entc/integration/gremlin/ent/filetype_update.go b/entc/integration/gremlin/ent/filetype_update.go index 730089fc5..47c714198 100644 --- a/entc/integration/gremlin/ent/filetype_update.go +++ b/entc/integration/gremlin/ent/filetype_update.go @@ -110,22 +110,14 @@ func (ftu *FileTypeUpdate) RemoveFiles(f ...*File) *FileTypeUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (ftu *FileTypeUpdate) Save(ctx context.Context) (int, error) { - if v, ok := ftu.mutation.GetType(); ok { - if err := filetype.TypeValidator(v); err != nil { - return 0, &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} - } - } - if v, ok := ftu.mutation.State(); ok { - if err := filetype.StateValidator(v); err != nil { - return 0, &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} - } - } - var ( err error affected int ) if len(ftu.hooks) == 0 { + if err = ftu.check(); err != nil { + return 0, err + } affected, err = ftu.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -133,6 +125,9 @@ func (ftu *FileTypeUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ftu.check(); err != nil { + return 0, err + } ftu.mutation = mutation affected, err = ftu.gremlinSave(ctx) mutation.done = true @@ -170,6 +165,21 @@ func (ftu *FileTypeUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (ftu *FileTypeUpdate) check() error { + if v, ok := ftu.mutation.GetType(); ok { + if err := filetype.TypeValidator(v); err != nil { + return &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} + } + } + if v, ok := ftu.mutation.State(); ok { + if err := filetype.StateValidator(v); err != nil { + return &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} + } + } + return nil +} + func (ftu *FileTypeUpdate) gremlinSave(ctx context.Context) (int, error) { res := &gremlin.Response{} query, bindings := ftu.gremlin().Query() @@ -321,22 +331,14 @@ func (ftuo *FileTypeUpdateOne) RemoveFiles(f ...*File) *FileTypeUpdateOne { // Save executes the query and returns the updated entity. func (ftuo *FileTypeUpdateOne) Save(ctx context.Context) (*FileType, error) { - if v, ok := ftuo.mutation.GetType(); ok { - if err := filetype.TypeValidator(v); err != nil { - return nil, &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} - } - } - if v, ok := ftuo.mutation.State(); ok { - if err := filetype.StateValidator(v); err != nil { - return nil, &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} - } - } - var ( err error node *FileType ) if len(ftuo.hooks) == 0 { + if err = ftuo.check(); err != nil { + return nil, err + } node, err = ftuo.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -344,6 +346,9 @@ func (ftuo *FileTypeUpdateOne) Save(ctx context.Context) (*FileType, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ftuo.check(); err != nil { + return nil, err + } ftuo.mutation = mutation node, err = ftuo.gremlinSave(ctx) mutation.done = true @@ -381,6 +386,21 @@ func (ftuo *FileTypeUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (ftuo *FileTypeUpdateOne) check() error { + if v, ok := ftuo.mutation.GetType(); ok { + if err := filetype.TypeValidator(v); err != nil { + return &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} + } + } + if v, ok := ftuo.mutation.State(); ok { + if err := filetype.StateValidator(v); err != nil { + return &ValidationError{Name: "state", err: fmt.Errorf("ent: validator failed for field \"state\": %w", err)} + } + } + return nil +} + func (ftuo *FileTypeUpdateOne) gremlinSave(ctx context.Context) (*FileType, error) { res := &gremlin.Response{} id, ok := ftuo.mutation.ID() diff --git a/entc/integration/gremlin/ent/group_create.go b/entc/integration/gremlin/ent/group_create.go index 7d8bfea2d..d87082598 100644 --- a/entc/integration/gremlin/ent/group_create.go +++ b/entc/integration/gremlin/ent/group_create.go @@ -145,14 +145,15 @@ func (gc *GroupCreate) Mutation() *GroupMutation { // Save creates the Group in the database. func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { - if err := gc.preSave(); err != nil { - return nil, err - } var ( err error node *Group ) + gc.defaults() if len(gc.hooks) == 0 { + if err = gc.check(); err != nil { + return nil, err + } node, err = gc.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -160,6 +161,9 @@ func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gc.check(); err != nil { + return nil, err + } gc.mutation = mutation node, err = gc.gremlinSave(ctx) mutation.done = true @@ -184,11 +188,23 @@ func (gc *GroupCreate) SaveX(ctx context.Context) *Group { return v } -func (gc *GroupCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (gc *GroupCreate) defaults() { if _, ok := gc.mutation.Active(); !ok { v := group.DefaultActive gc.mutation.SetActive(v) } + if _, ok := gc.mutation.MaxUsers(); !ok { + v := group.DefaultMaxUsers + gc.mutation.SetMaxUsers(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (gc *GroupCreate) check() error { + if _, ok := gc.mutation.Active(); !ok { + return &ValidationError{Name: "active", err: errors.New("ent: missing required field \"active\"")} + } if _, ok := gc.mutation.Expire(); !ok { return &ValidationError{Name: "expire", err: errors.New("ent: missing required field \"expire\"")} } @@ -197,10 +213,6 @@ func (gc *GroupCreate) preSave() error { return &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} } } - if _, ok := gc.mutation.MaxUsers(); !ok { - v := group.DefaultMaxUsers - gc.mutation.SetMaxUsers(v) - } if v, ok := gc.mutation.MaxUsers(); ok { if err := group.MaxUsersValidator(v); err != nil { return &ValidationError{Name: "max_users", err: fmt.Errorf("ent: validator failed for field \"max_users\": %w", err)} diff --git a/entc/integration/gremlin/ent/group_update.go b/entc/integration/gremlin/ent/group_update.go index 33af7bf4a..ce8358313 100644 --- a/entc/integration/gremlin/ent/group_update.go +++ b/entc/integration/gremlin/ent/group_update.go @@ -241,30 +241,14 @@ func (gu *GroupUpdate) ClearInfo() *GroupUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (gu *GroupUpdate) Save(ctx context.Context) (int, error) { - if v, ok := gu.mutation.GetType(); ok { - if err := group.TypeValidator(v); err != nil { - return 0, &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} - } - } - if v, ok := gu.mutation.MaxUsers(); ok { - if err := group.MaxUsersValidator(v); err != nil { - return 0, &ValidationError{Name: "max_users", err: fmt.Errorf("ent: validator failed for field \"max_users\": %w", err)} - } - } - if v, ok := gu.mutation.Name(); ok { - if err := group.NameValidator(v); err != nil { - return 0, &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} - } - } - - if _, ok := gu.mutation.InfoID(); gu.mutation.InfoCleared() && !ok { - return 0, errors.New("ent: clearing a unique edge \"info\"") - } var ( err error affected int ) if len(gu.hooks) == 0 { + if err = gu.check(); err != nil { + return 0, err + } affected, err = gu.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -272,6 +256,9 @@ func (gu *GroupUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gu.check(); err != nil { + return 0, err + } gu.mutation = mutation affected, err = gu.gremlinSave(ctx) mutation.done = true @@ -309,6 +296,29 @@ func (gu *GroupUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (gu *GroupUpdate) check() error { + if v, ok := gu.mutation.GetType(); ok { + if err := group.TypeValidator(v); err != nil { + return &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} + } + } + if v, ok := gu.mutation.MaxUsers(); ok { + if err := group.MaxUsersValidator(v); err != nil { + return &ValidationError{Name: "max_users", err: fmt.Errorf("ent: validator failed for field \"max_users\": %w", err)} + } + } + if v, ok := gu.mutation.Name(); ok { + if err := group.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} + } + } + if _, ok := gu.mutation.InfoID(); gu.mutation.InfoCleared() && !ok { + return errors.New("ent: clearing a required unique edge \"info\"") + } + return nil +} + func (gu *GroupUpdate) gremlinSave(ctx context.Context) (int, error) { res := &gremlin.Response{} query, bindings := gu.gremlin().Query() @@ -628,30 +638,14 @@ func (guo *GroupUpdateOne) ClearInfo() *GroupUpdateOne { // Save executes the query and returns the updated entity. func (guo *GroupUpdateOne) Save(ctx context.Context) (*Group, error) { - if v, ok := guo.mutation.GetType(); ok { - if err := group.TypeValidator(v); err != nil { - return nil, &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} - } - } - if v, ok := guo.mutation.MaxUsers(); ok { - if err := group.MaxUsersValidator(v); err != nil { - return nil, &ValidationError{Name: "max_users", err: fmt.Errorf("ent: validator failed for field \"max_users\": %w", err)} - } - } - if v, ok := guo.mutation.Name(); ok { - if err := group.NameValidator(v); err != nil { - return nil, &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} - } - } - - if _, ok := guo.mutation.InfoID(); guo.mutation.InfoCleared() && !ok { - return nil, errors.New("ent: clearing a unique edge \"info\"") - } var ( err error node *Group ) if len(guo.hooks) == 0 { + if err = guo.check(); err != nil { + return nil, err + } node, err = guo.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -659,6 +653,9 @@ func (guo *GroupUpdateOne) Save(ctx context.Context) (*Group, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = guo.check(); err != nil { + return nil, err + } guo.mutation = mutation node, err = guo.gremlinSave(ctx) mutation.done = true @@ -696,6 +693,29 @@ func (guo *GroupUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (guo *GroupUpdateOne) check() error { + if v, ok := guo.mutation.GetType(); ok { + if err := group.TypeValidator(v); err != nil { + return &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} + } + } + if v, ok := guo.mutation.MaxUsers(); ok { + if err := group.MaxUsersValidator(v); err != nil { + return &ValidationError{Name: "max_users", err: fmt.Errorf("ent: validator failed for field \"max_users\": %w", err)} + } + } + if v, ok := guo.mutation.Name(); ok { + if err := group.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} + } + } + if _, ok := guo.mutation.InfoID(); guo.mutation.InfoCleared() && !ok { + return errors.New("ent: clearing a required unique edge \"info\"") + } + return nil +} + func (guo *GroupUpdateOne) gremlinSave(ctx context.Context) (*Group, error) { res := &gremlin.Response{} id, ok := guo.mutation.ID() diff --git a/entc/integration/gremlin/ent/groupinfo_create.go b/entc/integration/gremlin/ent/groupinfo_create.go index 1056be81a..baf595757 100644 --- a/entc/integration/gremlin/ent/groupinfo_create.go +++ b/entc/integration/gremlin/ent/groupinfo_create.go @@ -69,14 +69,15 @@ func (gic *GroupInfoCreate) Mutation() *GroupInfoMutation { // Save creates the GroupInfo in the database. func (gic *GroupInfoCreate) Save(ctx context.Context) (*GroupInfo, error) { - if err := gic.preSave(); err != nil { - return nil, err - } var ( err error node *GroupInfo ) + gic.defaults() if len(gic.hooks) == 0 { + if err = gic.check(); err != nil { + return nil, err + } node, err = gic.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -84,6 +85,9 @@ func (gic *GroupInfoCreate) Save(ctx context.Context) (*GroupInfo, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gic.check(); err != nil { + return nil, err + } gic.mutation = mutation node, err = gic.gremlinSave(ctx) mutation.done = true @@ -108,13 +112,21 @@ func (gic *GroupInfoCreate) SaveX(ctx context.Context) *GroupInfo { return v } -func (gic *GroupInfoCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (gic *GroupInfoCreate) defaults() { + if _, ok := gic.mutation.MaxUsers(); !ok { + v := groupinfo.DefaultMaxUsers + gic.mutation.SetMaxUsers(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (gic *GroupInfoCreate) check() error { if _, ok := gic.mutation.Desc(); !ok { return &ValidationError{Name: "desc", err: errors.New("ent: missing required field \"desc\"")} } if _, ok := gic.mutation.MaxUsers(); !ok { - v := groupinfo.DefaultMaxUsers - gic.mutation.SetMaxUsers(v) + return &ValidationError{Name: "max_users", err: errors.New("ent: missing required field \"max_users\"")} } return nil } diff --git a/entc/integration/gremlin/ent/groupinfo_update.go b/entc/integration/gremlin/ent/groupinfo_update.go index 99e030fb9..5e81dcfcc 100644 --- a/entc/integration/gremlin/ent/groupinfo_update.go +++ b/entc/integration/gremlin/ent/groupinfo_update.go @@ -104,7 +104,6 @@ func (giu *GroupInfoUpdate) RemoveGroups(g ...*Group) *GroupInfoUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (giu *GroupInfoUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -294,7 +293,6 @@ func (giuo *GroupInfoUpdateOne) RemoveGroups(g ...*Group) *GroupInfoUpdateOne { // Save executes the query and returns the updated entity. func (giuo *GroupInfoUpdateOne) Save(ctx context.Context) (*GroupInfo, error) { - var ( err error node *GroupInfo diff --git a/entc/integration/gremlin/ent/item_create.go b/entc/integration/gremlin/ent/item_create.go index 7bc8e4029..2eef4f0dd 100644 --- a/entc/integration/gremlin/ent/item_create.go +++ b/entc/integration/gremlin/ent/item_create.go @@ -30,14 +30,14 @@ func (ic *ItemCreate) Mutation() *ItemMutation { // Save creates the Item in the database. func (ic *ItemCreate) Save(ctx context.Context) (*Item, error) { - if err := ic.preSave(); err != nil { - return nil, err - } var ( err error node *Item ) if len(ic.hooks) == 0 { + if err = ic.check(); err != nil { + return nil, err + } node, err = ic.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -45,6 +45,9 @@ func (ic *ItemCreate) Save(ctx context.Context) (*Item, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = ic.check(); err != nil { + return nil, err + } ic.mutation = mutation node, err = ic.gremlinSave(ctx) mutation.done = true @@ -69,7 +72,8 @@ func (ic *ItemCreate) SaveX(ctx context.Context) *Item { return v } -func (ic *ItemCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (ic *ItemCreate) check() error { return nil } diff --git a/entc/integration/gremlin/ent/node_create.go b/entc/integration/gremlin/ent/node_create.go index e3ef2beef..6aa5c114b 100644 --- a/entc/integration/gremlin/ent/node_create.go +++ b/entc/integration/gremlin/ent/node_create.go @@ -84,14 +84,14 @@ func (nc *NodeCreate) Mutation() *NodeMutation { // Save creates the Node in the database. func (nc *NodeCreate) Save(ctx context.Context) (*Node, error) { - if err := nc.preSave(); err != nil { - return nil, err - } var ( err error node *Node ) if len(nc.hooks) == 0 { + if err = nc.check(); err != nil { + return nil, err + } node, err = nc.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -99,6 +99,9 @@ func (nc *NodeCreate) Save(ctx context.Context) (*Node, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = nc.check(); err != nil { + return nil, err + } nc.mutation = mutation node, err = nc.gremlinSave(ctx) mutation.done = true @@ -123,7 +126,8 @@ func (nc *NodeCreate) SaveX(ctx context.Context) *Node { return v } -func (nc *NodeCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (nc *NodeCreate) check() error { return nil } diff --git a/entc/integration/gremlin/ent/node_update.go b/entc/integration/gremlin/ent/node_update.go index e34c601e9..f91931d24 100644 --- a/entc/integration/gremlin/ent/node_update.go +++ b/entc/integration/gremlin/ent/node_update.go @@ -117,7 +117,6 @@ func (nu *NodeUpdate) ClearNext() *NodeUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (nu *NodeUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -336,7 +335,6 @@ func (nuo *NodeUpdateOne) ClearNext() *NodeUpdateOne { // Save executes the query and returns the updated entity. func (nuo *NodeUpdateOne) Save(ctx context.Context) (*Node, error) { - var ( err error node *Node diff --git a/entc/integration/gremlin/ent/pet_create.go b/entc/integration/gremlin/ent/pet_create.go index bf53ee96b..20e1177c9 100644 --- a/entc/integration/gremlin/ent/pet_create.go +++ b/entc/integration/gremlin/ent/pet_create.go @@ -78,14 +78,14 @@ func (pc *PetCreate) Mutation() *PetMutation { // Save creates the Pet in the database. func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { - if err := pc.preSave(); err != nil { - return nil, err - } var ( err error node *Pet ) if len(pc.hooks) == 0 { + if err = pc.check(); err != nil { + return nil, err + } node, err = pc.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -93,6 +93,9 @@ func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = pc.check(); err != nil { + return nil, err + } pc.mutation = mutation node, err = pc.gremlinSave(ctx) mutation.done = true @@ -117,7 +120,8 @@ func (pc *PetCreate) SaveX(ctx context.Context) *Pet { return v } -func (pc *PetCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (pc *PetCreate) check() error { if _, ok := pc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } diff --git a/entc/integration/gremlin/ent/pet_update.go b/entc/integration/gremlin/ent/pet_update.go index 51b7cb4b3..bbb859a11 100644 --- a/entc/integration/gremlin/ent/pet_update.go +++ b/entc/integration/gremlin/ent/pet_update.go @@ -97,7 +97,6 @@ func (pu *PetUpdate) ClearOwner() *PetUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (pu *PetUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -281,7 +280,6 @@ func (puo *PetUpdateOne) ClearOwner() *PetUpdateOne { // Save executes the query and returns the updated entity. func (puo *PetUpdateOne) Save(ctx context.Context) (*Pet, error) { - var ( err error node *Pet diff --git a/entc/integration/gremlin/ent/spec_create.go b/entc/integration/gremlin/ent/spec_create.go index 944c1923b..a06764fa0 100644 --- a/entc/integration/gremlin/ent/spec_create.go +++ b/entc/integration/gremlin/ent/spec_create.go @@ -45,14 +45,14 @@ func (sc *SpecCreate) Mutation() *SpecMutation { // Save creates the Spec in the database. func (sc *SpecCreate) Save(ctx context.Context) (*Spec, error) { - if err := sc.preSave(); err != nil { - return nil, err - } var ( err error node *Spec ) if len(sc.hooks) == 0 { + if err = sc.check(); err != nil { + return nil, err + } node, err = sc.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -60,6 +60,9 @@ func (sc *SpecCreate) Save(ctx context.Context) (*Spec, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = sc.check(); err != nil { + return nil, err + } sc.mutation = mutation node, err = sc.gremlinSave(ctx) mutation.done = true @@ -84,7 +87,8 @@ func (sc *SpecCreate) SaveX(ctx context.Context) *Spec { return v } -func (sc *SpecCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (sc *SpecCreate) check() error { return nil } diff --git a/entc/integration/gremlin/ent/spec_update.go b/entc/integration/gremlin/ent/spec_update.go index 2e5b7e202..f373ca132 100644 --- a/entc/integration/gremlin/ent/spec_update.go +++ b/entc/integration/gremlin/ent/spec_update.go @@ -75,7 +75,6 @@ func (su *SpecUpdate) RemoveCard(c ...*Card) *SpecUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (su *SpecUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -210,7 +209,6 @@ func (suo *SpecUpdateOne) RemoveCard(c ...*Card) *SpecUpdateOne { // Save executes the query and returns the updated entity. func (suo *SpecUpdateOne) Save(ctx context.Context) (*Spec, error) { - var ( err error node *Spec diff --git a/entc/integration/gremlin/ent/task_create.go b/entc/integration/gremlin/ent/task_create.go index 07793d734..394d64c4b 100644 --- a/entc/integration/gremlin/ent/task_create.go +++ b/entc/integration/gremlin/ent/task_create.go @@ -8,6 +8,7 @@ package ent import ( "context" + "errors" "fmt" "github.com/facebook/ent/dialect/gremlin" @@ -45,14 +46,15 @@ func (tc *TaskCreate) Mutation() *TaskMutation { // Save creates the Task in the database. func (tc *TaskCreate) Save(ctx context.Context) (*Task, error) { - if err := tc.preSave(); err != nil { - return nil, err - } var ( err error node *Task ) + tc.defaults() if len(tc.hooks) == 0 { + if err = tc.check(); err != nil { + return nil, err + } node, err = tc.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -60,6 +62,9 @@ func (tc *TaskCreate) Save(ctx context.Context) (*Task, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = tc.check(); err != nil { + return nil, err + } tc.mutation = mutation node, err = tc.gremlinSave(ctx) mutation.done = true @@ -84,11 +89,19 @@ func (tc *TaskCreate) SaveX(ctx context.Context) *Task { return v } -func (tc *TaskCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (tc *TaskCreate) defaults() { if _, ok := tc.mutation.Priority(); !ok { v := task.DefaultPriority tc.mutation.SetPriority(v) } +} + +// check runs all checks and user-defined validators on the builder. +func (tc *TaskCreate) check() error { + if _, ok := tc.mutation.Priority(); !ok { + return &ValidationError{Name: "priority", err: errors.New("ent: missing required field \"priority\"")} + } if v, ok := tc.mutation.Priority(); ok { if err := task.PriorityValidator(int(v)); err != nil { return &ValidationError{Name: "priority", err: fmt.Errorf("ent: validator failed for field \"priority\": %w", err)} diff --git a/entc/integration/gremlin/ent/task_update.go b/entc/integration/gremlin/ent/task_update.go index eae91cefd..9e956a217 100644 --- a/entc/integration/gremlin/ent/task_update.go +++ b/entc/integration/gremlin/ent/task_update.go @@ -61,16 +61,14 @@ func (tu *TaskUpdate) Mutation() *TaskMutation { // Save executes the query and returns the number of rows/vertices matched by this operation. func (tu *TaskUpdate) Save(ctx context.Context) (int, error) { - if v, ok := tu.mutation.Priority(); ok { - if err := task.PriorityValidator(int(v)); err != nil { - return 0, &ValidationError{Name: "priority", err: fmt.Errorf("ent: validator failed for field \"priority\": %w", err)} - } - } var ( err error affected int ) if len(tu.hooks) == 0 { + if err = tu.check(); err != nil { + return 0, err + } affected, err = tu.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -78,6 +76,9 @@ func (tu *TaskUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = tu.check(); err != nil { + return 0, err + } tu.mutation = mutation affected, err = tu.gremlinSave(ctx) mutation.done = true @@ -115,6 +116,16 @@ func (tu *TaskUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (tu *TaskUpdate) check() error { + if v, ok := tu.mutation.Priority(); ok { + if err := task.PriorityValidator(int(v)); err != nil { + return &ValidationError{Name: "priority", err: fmt.Errorf("ent: validator failed for field \"priority\": %w", err)} + } + } + return nil +} + func (tu *TaskUpdate) gremlinSave(ctx context.Context) (int, error) { res := &gremlin.Response{} query, bindings := tu.gremlin().Query() @@ -181,16 +192,14 @@ func (tuo *TaskUpdateOne) Mutation() *TaskMutation { // Save executes the query and returns the updated entity. func (tuo *TaskUpdateOne) Save(ctx context.Context) (*Task, error) { - if v, ok := tuo.mutation.Priority(); ok { - if err := task.PriorityValidator(int(v)); err != nil { - return nil, &ValidationError{Name: "priority", err: fmt.Errorf("ent: validator failed for field \"priority\": %w", err)} - } - } var ( err error node *Task ) if len(tuo.hooks) == 0 { + if err = tuo.check(); err != nil { + return nil, err + } node, err = tuo.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -198,6 +207,9 @@ func (tuo *TaskUpdateOne) Save(ctx context.Context) (*Task, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = tuo.check(); err != nil { + return nil, err + } tuo.mutation = mutation node, err = tuo.gremlinSave(ctx) mutation.done = true @@ -235,6 +247,16 @@ func (tuo *TaskUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (tuo *TaskUpdateOne) check() error { + if v, ok := tuo.mutation.Priority(); ok { + if err := task.PriorityValidator(int(v)); err != nil { + return &ValidationError{Name: "priority", err: fmt.Errorf("ent: validator failed for field \"priority\": %w", err)} + } + } + return nil +} + func (tuo *TaskUpdateOne) gremlinSave(ctx context.Context) (*Task, error) { res := &gremlin.Response{} id, ok := tuo.mutation.ID() diff --git a/entc/integration/gremlin/ent/user_create.go b/entc/integration/gremlin/ent/user_create.go index 68ae81433..6d8095004 100644 --- a/entc/integration/gremlin/ent/user_create.go +++ b/entc/integration/gremlin/ent/user_create.go @@ -324,14 +324,15 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) + uc.defaults() if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -339,6 +340,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.gremlinSave(ctx) mutation.done = true @@ -363,7 +367,20 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (uc *UserCreate) defaults() { + if _, ok := uc.mutation.Last(); !ok { + v := user.DefaultLast + uc.mutation.SetLast(v) + } + if _, ok := uc.mutation.Role(); !ok { + v := user.DefaultRole + uc.mutation.SetRole(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if v, ok := uc.mutation.OptionalInt(); ok { if err := user.OptionalIntValidator(v); err != nil { return &ValidationError{Name: "optional_int", err: fmt.Errorf("ent: validator failed for field \"optional_int\": %w", err)} @@ -376,12 +393,10 @@ func (uc *UserCreate) preSave() error { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } if _, ok := uc.mutation.Last(); !ok { - v := user.DefaultLast - uc.mutation.SetLast(v) + return &ValidationError{Name: "last", err: errors.New("ent: missing required field \"last\"")} } if _, ok := uc.mutation.Role(); !ok { - v := user.DefaultRole - uc.mutation.SetRole(v) + return &ValidationError{Name: "role", err: errors.New("ent: missing required field \"role\"")} } if v, ok := uc.mutation.Role(); ok { if err := user.RoleValidator(v); err != nil { diff --git a/entc/integration/gremlin/ent/user_update.go b/entc/integration/gremlin/ent/user_update.go index 3a5fc0cfd..c46132575 100644 --- a/entc/integration/gremlin/ent/user_update.go +++ b/entc/integration/gremlin/ent/user_update.go @@ -546,22 +546,14 @@ func (uu *UserUpdate) ClearParent() *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - if v, ok := uu.mutation.OptionalInt(); ok { - if err := user.OptionalIntValidator(v); err != nil { - return 0, &ValidationError{Name: "optional_int", err: fmt.Errorf("ent: validator failed for field \"optional_int\": %w", err)} - } - } - if v, ok := uu.mutation.Role(); ok { - if err := user.RoleValidator(v); err != nil { - return 0, &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} - } - } - var ( err error affected int ) if len(uu.hooks) == 0 { + if err = uu.check(); err != nil { + return 0, err + } affected, err = uu.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -569,6 +561,9 @@ func (uu *UserUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uu.check(); err != nil { + return 0, err + } uu.mutation = mutation affected, err = uu.gremlinSave(ctx) mutation.done = true @@ -606,6 +601,21 @@ func (uu *UserUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (uu *UserUpdate) check() error { + if v, ok := uu.mutation.OptionalInt(); ok { + if err := user.OptionalIntValidator(v); err != nil { + return &ValidationError{Name: "optional_int", err: fmt.Errorf("ent: validator failed for field \"optional_int\": %w", err)} + } + } + if v, ok := uu.mutation.Role(); ok { + if err := user.RoleValidator(v); err != nil { + return &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} + } + } + return nil +} + func (uu *UserUpdate) gremlinSave(ctx context.Context) (int, error) { res := &gremlin.Response{} query, bindings := uu.gremlin().Query() @@ -1334,22 +1344,14 @@ func (uuo *UserUpdateOne) ClearParent() *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - if v, ok := uuo.mutation.OptionalInt(); ok { - if err := user.OptionalIntValidator(v); err != nil { - return nil, &ValidationError{Name: "optional_int", err: fmt.Errorf("ent: validator failed for field \"optional_int\": %w", err)} - } - } - if v, ok := uuo.mutation.Role(); ok { - if err := user.RoleValidator(v); err != nil { - return nil, &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} - } - } - var ( err error node *User ) if len(uuo.hooks) == 0 { + if err = uuo.check(); err != nil { + return nil, err + } node, err = uuo.gremlinSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -1357,6 +1359,9 @@ func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uuo.check(); err != nil { + return nil, err + } uuo.mutation = mutation node, err = uuo.gremlinSave(ctx) mutation.done = true @@ -1394,6 +1399,21 @@ func (uuo *UserUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (uuo *UserUpdateOne) check() error { + if v, ok := uuo.mutation.OptionalInt(); ok { + if err := user.OptionalIntValidator(v); err != nil { + return &ValidationError{Name: "optional_int", err: fmt.Errorf("ent: validator failed for field \"optional_int\": %w", err)} + } + } + if v, ok := uuo.mutation.Role(); ok { + if err := user.RoleValidator(v); err != nil { + return &ValidationError{Name: "role", err: fmt.Errorf("ent: validator failed for field \"role\": %w", err)} + } + } + return nil +} + func (uuo *UserUpdateOne) gremlinSave(ctx context.Context) (*User, error) { res := &gremlin.Response{} id, ok := uuo.mutation.ID() diff --git a/entc/integration/hooks/ent/card.go b/entc/integration/hooks/ent/card.go index 3b4047eeb..5ab70d9da 100644 --- a/entc/integration/hooks/ent/card.go +++ b/entc/integration/hooks/ent/card.go @@ -27,6 +27,8 @@ type Card struct { Name string `json:"name,omitempty"` // CreatedAt holds the value of the "created_at" field. CreatedAt time.Time `json:"created_at,omitempty"` + // InHook holds the value of the "in_hook" field. + InHook string `json:"in_hook,omitempty"` // Edges holds the relations/edges for other nodes in the graph. // The values are being populated by the CardQuery when eager-loading is set. Edges CardEdges `json:"edges"` @@ -63,6 +65,7 @@ func (*Card) scanValues() []interface{} { &sql.NullString{}, // number &sql.NullString{}, // name &sql.NullTime{}, // created_at + &sql.NullString{}, // in_hook } } @@ -100,7 +103,12 @@ func (c *Card) assignValues(values ...interface{}) error { } else if value.Valid { c.CreatedAt = value.Time } - values = values[3:] + if value, ok := values[3].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field in_hook", values[3]) + } else if value.Valid { + c.InHook = value.String + } + values = values[4:] if len(values) == len(card.ForeignKeys) { if value, ok := values[0].(*sql.NullInt64); !ok { return fmt.Errorf("unexpected type %T for edge-field user_cards", value) @@ -146,6 +154,8 @@ func (c *Card) String() string { builder.WriteString(c.Name) builder.WriteString(", created_at=") builder.WriteString(c.CreatedAt.Format(time.ANSIC)) + builder.WriteString(", in_hook=") + builder.WriteString(c.InHook) builder.WriteByte(')') return builder.String() } diff --git a/entc/integration/hooks/ent/card/card.go b/entc/integration/hooks/ent/card/card.go index e818d5cda..5624821b2 100644 --- a/entc/integration/hooks/ent/card/card.go +++ b/entc/integration/hooks/ent/card/card.go @@ -23,6 +23,8 @@ const ( FieldName = "name" // FieldCreatedAt holds the string denoting the created_at field in the database. FieldCreatedAt = "created_at" + // FieldInHook holds the string denoting the in_hook field in the database. + FieldInHook = "in_hook" // EdgeOwner holds the string denoting the owner edge name in mutations. EdgeOwner = "owner" @@ -44,6 +46,7 @@ var Columns = []string{ FieldNumber, FieldName, FieldCreatedAt, + FieldInHook, } // ForeignKeys holds the SQL foreign-keys that are owned by the Card type. diff --git a/entc/integration/hooks/ent/card/where.go b/entc/integration/hooks/ent/card/where.go index a4f61ab2f..4d8679c93 100644 --- a/entc/integration/hooks/ent/card/where.go +++ b/entc/integration/hooks/ent/card/where.go @@ -118,6 +118,13 @@ func CreatedAt(v time.Time) predicate.Card { }) } +// InHook applies equality check predicate on the "in_hook" field. It's identical to InHookEQ. +func InHook(v string) predicate.Card { + return predicate.Card(func(s *sql.Selector) { + s.Where(sql.EQ(s.C(FieldInHook), v)) + }) +} + // NumberEQ applies the EQ predicate on the "number" field. func NumberEQ(v string) predicate.Card { return predicate.Card(func(s *sql.Selector) { @@ -430,6 +437,117 @@ func CreatedAtLTE(v time.Time) predicate.Card { }) } +// InHookEQ applies the EQ predicate on the "in_hook" field. +func InHookEQ(v string) predicate.Card { + return predicate.Card(func(s *sql.Selector) { + s.Where(sql.EQ(s.C(FieldInHook), v)) + }) +} + +// InHookNEQ applies the NEQ predicate on the "in_hook" field. +func InHookNEQ(v string) predicate.Card { + return predicate.Card(func(s *sql.Selector) { + s.Where(sql.NEQ(s.C(FieldInHook), v)) + }) +} + +// InHookIn applies the In predicate on the "in_hook" field. +func InHookIn(vs ...string) predicate.Card { + v := make([]interface{}, len(vs)) + for i := range v { + v[i] = vs[i] + } + return predicate.Card(func(s *sql.Selector) { + // if not arguments were provided, append the FALSE constants, + // since we can't apply "IN ()". This will make this predicate falsy. + if len(v) == 0 { + s.Where(sql.False()) + return + } + s.Where(sql.In(s.C(FieldInHook), v...)) + }) +} + +// InHookNotIn applies the NotIn predicate on the "in_hook" field. +func InHookNotIn(vs ...string) predicate.Card { + v := make([]interface{}, len(vs)) + for i := range v { + v[i] = vs[i] + } + return predicate.Card(func(s *sql.Selector) { + // if not arguments were provided, append the FALSE constants, + // since we can't apply "IN ()". This will make this predicate falsy. + if len(v) == 0 { + s.Where(sql.False()) + return + } + s.Where(sql.NotIn(s.C(FieldInHook), v...)) + }) +} + +// InHookGT applies the GT predicate on the "in_hook" field. +func InHookGT(v string) predicate.Card { + return predicate.Card(func(s *sql.Selector) { + s.Where(sql.GT(s.C(FieldInHook), v)) + }) +} + +// InHookGTE applies the GTE predicate on the "in_hook" field. +func InHookGTE(v string) predicate.Card { + return predicate.Card(func(s *sql.Selector) { + s.Where(sql.GTE(s.C(FieldInHook), v)) + }) +} + +// InHookLT applies the LT predicate on the "in_hook" field. +func InHookLT(v string) predicate.Card { + return predicate.Card(func(s *sql.Selector) { + s.Where(sql.LT(s.C(FieldInHook), v)) + }) +} + +// InHookLTE applies the LTE predicate on the "in_hook" field. +func InHookLTE(v string) predicate.Card { + return predicate.Card(func(s *sql.Selector) { + s.Where(sql.LTE(s.C(FieldInHook), v)) + }) +} + +// InHookContains applies the Contains predicate on the "in_hook" field. +func InHookContains(v string) predicate.Card { + return predicate.Card(func(s *sql.Selector) { + s.Where(sql.Contains(s.C(FieldInHook), v)) + }) +} + +// InHookHasPrefix applies the HasPrefix predicate on the "in_hook" field. +func InHookHasPrefix(v string) predicate.Card { + return predicate.Card(func(s *sql.Selector) { + s.Where(sql.HasPrefix(s.C(FieldInHook), v)) + }) +} + +// InHookHasSuffix applies the HasSuffix predicate on the "in_hook" field. +func InHookHasSuffix(v string) predicate.Card { + return predicate.Card(func(s *sql.Selector) { + s.Where(sql.HasSuffix(s.C(FieldInHook), v)) + }) +} + +// InHookEqualFold applies the EqualFold predicate on the "in_hook" field. +func InHookEqualFold(v string) predicate.Card { + return predicate.Card(func(s *sql.Selector) { + s.Where(sql.EqualFold(s.C(FieldInHook), v)) + }) +} + +// InHookContainsFold applies the ContainsFold predicate on the "in_hook" field. +func InHookContainsFold(v string) predicate.Card { + return predicate.Card(func(s *sql.Selector) { + s.Where(sql.ContainsFold(s.C(FieldInHook), v)) + }) +} + // HasOwner applies the HasEdge predicate on the "owner" edge. func HasOwner() predicate.Card { return predicate.Card(func(s *sql.Selector) { diff --git a/entc/integration/hooks/ent/card_create.go b/entc/integration/hooks/ent/card_create.go index 5846f7168..9d26a908e 100644 --- a/entc/integration/hooks/ent/card_create.go +++ b/entc/integration/hooks/ent/card_create.go @@ -8,6 +8,7 @@ package ent import ( "context" + "errors" "fmt" "time" @@ -66,6 +67,12 @@ func (cc *CardCreate) SetNillableCreatedAt(t *time.Time) *CardCreate { return cc } +// SetInHook sets the in_hook field. +func (cc *CardCreate) SetInHook(s string) *CardCreate { + cc.mutation.SetInHook(s) + return cc +} + // SetOwnerID sets the owner edge to User by id. func (cc *CardCreate) SetOwnerID(id int) *CardCreate { cc.mutation.SetOwnerID(id) @@ -92,14 +99,15 @@ func (cc *CardCreate) Mutation() *CardMutation { // Save creates the Card in the database. func (cc *CardCreate) Save(ctx context.Context) (*Card, error) { - if err := cc.preSave(); err != nil { - return nil, err - } var ( err error node *Card ) + cc.defaults() if len(cc.hooks) == 0 { + if err = cc.check(); err != nil { + return nil, err + } node, err = cc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -107,6 +115,9 @@ func (cc *CardCreate) Save(ctx context.Context) (*Card, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cc.check(); err != nil { + return nil, err + } cc.mutation = mutation node, err = cc.sqlSave(ctx) mutation.done = true @@ -131,19 +142,33 @@ func (cc *CardCreate) SaveX(ctx context.Context) *Card { return v } -func (cc *CardCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (cc *CardCreate) defaults() { if _, ok := cc.mutation.Number(); !ok { v := card.DefaultNumber cc.mutation.SetNumber(v) } + if _, ok := cc.mutation.CreatedAt(); !ok { + v := card.DefaultCreatedAt() + cc.mutation.SetCreatedAt(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (cc *CardCreate) check() error { + if _, ok := cc.mutation.Number(); !ok { + return &ValidationError{Name: "number", err: errors.New("ent: missing required field \"number\"")} + } if v, ok := cc.mutation.Number(); ok { if err := card.NumberValidator(v); err != nil { return &ValidationError{Name: "number", err: fmt.Errorf("ent: validator failed for field \"number\": %w", err)} } } if _, ok := cc.mutation.CreatedAt(); !ok { - v := card.DefaultCreatedAt() - cc.mutation.SetCreatedAt(v) + return &ValidationError{Name: "created_at", err: errors.New("ent: missing required field \"created_at\"")} + } + if _, ok := cc.mutation.InHook(); !ok { + return &ValidationError{Name: "in_hook", err: errors.New("ent: missing required field \"in_hook\"")} } return nil } @@ -196,6 +221,14 @@ func (cc *CardCreate) createSpec() (*Card, *sqlgraph.CreateSpec) { }) c.CreatedAt = value } + if value, ok := cc.mutation.InHook(); ok { + _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ + Type: field.TypeString, + Value: value, + Column: card.FieldInHook, + }) + c.InHook = value + } if nodes := cc.mutation.OwnerIDs(); len(nodes) > 0 { edge := &sqlgraph.EdgeSpec{ Rel: sqlgraph.M2O, @@ -232,14 +265,15 @@ func (ccb *CardCreateBulk) Save(ctx context.Context) ([]*Card, error) { for i := range ccb.builders { func(i int, root context.Context) { builder := ccb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*CardMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/hooks/ent/card_update.go b/entc/integration/hooks/ent/card_update.go index b5c5c5c1c..74ed5431f 100644 --- a/entc/integration/hooks/ent/card_update.go +++ b/entc/integration/hooks/ent/card_update.go @@ -67,6 +67,12 @@ func (cu *CardUpdate) SetNillableCreatedAt(t *time.Time) *CardUpdate { return cu } +// SetInHook sets the in_hook field. +func (cu *CardUpdate) SetInHook(s string) *CardUpdate { + cu.mutation.SetInHook(s) + return cu +} + // SetOwnerID sets the owner edge to User by id. func (cu *CardUpdate) SetOwnerID(id int) *CardUpdate { cu.mutation.SetOwnerID(id) @@ -99,7 +105,6 @@ func (cu *CardUpdate) ClearOwner() *CardUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (cu *CardUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -187,6 +192,13 @@ func (cu *CardUpdate) sqlSave(ctx context.Context) (n int, err error) { Column: card.FieldCreatedAt, }) } + if value, ok := cu.mutation.InHook(); ok { + _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ + Type: field.TypeString, + Value: value, + Column: card.FieldInHook, + }) + } if cu.mutation.OwnerCleared() { edge := &sqlgraph.EdgeSpec{ Rel: sqlgraph.M2O, @@ -274,6 +286,12 @@ func (cuo *CardUpdateOne) SetNillableCreatedAt(t *time.Time) *CardUpdateOne { return cuo } +// SetInHook sets the in_hook field. +func (cuo *CardUpdateOne) SetInHook(s string) *CardUpdateOne { + cuo.mutation.SetInHook(s) + return cuo +} + // SetOwnerID sets the owner edge to User by id. func (cuo *CardUpdateOne) SetOwnerID(id int) *CardUpdateOne { cuo.mutation.SetOwnerID(id) @@ -306,7 +324,6 @@ func (cuo *CardUpdateOne) ClearOwner() *CardUpdateOne { // Save executes the query and returns the updated entity. func (cuo *CardUpdateOne) Save(ctx context.Context) (*Card, error) { - var ( err error node *Card @@ -392,6 +409,13 @@ func (cuo *CardUpdateOne) sqlSave(ctx context.Context) (c *Card, err error) { Column: card.FieldCreatedAt, }) } + if value, ok := cuo.mutation.InHook(); ok { + _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ + Type: field.TypeString, + Value: value, + Column: card.FieldInHook, + }) + } if cuo.mutation.OwnerCleared() { edge := &sqlgraph.EdgeSpec{ Rel: sqlgraph.M2O, diff --git a/entc/integration/hooks/ent/migrate/schema.go b/entc/integration/hooks/ent/migrate/schema.go index 0b497066d..1f17c6887 100644 --- a/entc/integration/hooks/ent/migrate/schema.go +++ b/entc/integration/hooks/ent/migrate/schema.go @@ -18,6 +18,7 @@ var ( {Name: "number", Type: field.TypeString, Default: "unknown"}, {Name: "name", Type: field.TypeString, Nullable: true}, {Name: "created_at", Type: field.TypeTime}, + {Name: "in_hook", Type: field.TypeString}, {Name: "user_cards", Type: field.TypeInt, Nullable: true}, } // CardsTable holds the schema information for the "cards" table. @@ -28,7 +29,7 @@ var ( ForeignKeys: []*schema.ForeignKey{ { Symbol: "cards_users_cards", - Columns: []*schema.Column{CardsColumns[4]}, + Columns: []*schema.Column{CardsColumns[5]}, RefColumns: []*schema.Column{UsersColumns[0]}, OnDelete: schema.SetNull, diff --git a/entc/integration/hooks/ent/mutation.go b/entc/integration/hooks/ent/mutation.go index caf062e95..a88e28136 100644 --- a/entc/integration/hooks/ent/mutation.go +++ b/entc/integration/hooks/ent/mutation.go @@ -41,6 +41,7 @@ type CardMutation struct { number *string name *string created_at *time.Time + in_hook *string clearedFields map[string]struct{} owner *int clearedowner bool @@ -251,6 +252,43 @@ func (m *CardMutation) ResetCreatedAt() { m.created_at = nil } +// SetInHook sets the in_hook field. +func (m *CardMutation) SetInHook(s string) { + m.in_hook = &s +} + +// InHook returns the in_hook value in the mutation. +func (m *CardMutation) InHook() (r string, exists bool) { + v := m.in_hook + if v == nil { + return + } + return *v, true +} + +// OldInHook returns the old in_hook value of the Card. +// If the Card object wasn't provided to the builder, the object is fetched +// from the database. +// An error is returned if the mutation operation is not UpdateOne, or database query fails. +func (m *CardMutation) OldInHook(ctx context.Context) (v string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, fmt.Errorf("OldInHook is allowed only on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, fmt.Errorf("OldInHook requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldInHook: %w", err) + } + return oldValue.InHook, nil +} + +// ResetInHook reset all changes of the "in_hook" field. +func (m *CardMutation) ResetInHook() { + m.in_hook = nil +} + // SetOwnerID sets the owner edge to User by id. func (m *CardMutation) SetOwnerID(id int) { m.owner = &id @@ -304,7 +342,7 @@ func (m *CardMutation) Type() string { // this mutation. Note that, in order to get all numeric // fields that were in/decremented, call AddedFields(). func (m *CardMutation) Fields() []string { - fields := make([]string, 0, 3) + fields := make([]string, 0, 4) if m.number != nil { fields = append(fields, card.FieldNumber) } @@ -314,6 +352,9 @@ func (m *CardMutation) Fields() []string { if m.created_at != nil { fields = append(fields, card.FieldCreatedAt) } + if m.in_hook != nil { + fields = append(fields, card.FieldInHook) + } return fields } @@ -328,6 +369,8 @@ func (m *CardMutation) Field(name string) (ent.Value, bool) { return m.Name() case card.FieldCreatedAt: return m.CreatedAt() + case card.FieldInHook: + return m.InHook() } return nil, false } @@ -343,6 +386,8 @@ func (m *CardMutation) OldField(ctx context.Context, name string) (ent.Value, er return m.OldName(ctx) case card.FieldCreatedAt: return m.OldCreatedAt(ctx) + case card.FieldInHook: + return m.OldInHook(ctx) } return nil, fmt.Errorf("unknown Card field %s", name) } @@ -373,6 +418,13 @@ func (m *CardMutation) SetField(name string, value ent.Value) error { } m.SetCreatedAt(v) return nil + case card.FieldInHook: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetInHook(v) + return nil } return fmt.Errorf("unknown Card field %s", name) } @@ -441,6 +493,9 @@ func (m *CardMutation) ResetField(name string) error { case card.FieldCreatedAt: m.ResetCreatedAt() return nil + case card.FieldInHook: + m.ResetInHook() + return nil } return fmt.Errorf("unknown Card field %s", name) } diff --git a/entc/integration/hooks/ent/schema/card.go b/entc/integration/hooks/ent/schema/card.go index 333bca650..fd3a5764a 100644 --- a/entc/integration/hooks/ent/schema/card.go +++ b/entc/integration/hooks/ent/schema/card.go @@ -61,6 +61,7 @@ func (Card) Hooks() []ent.Hook { ), func(next ent.Mutator) ent.Mutator { return hook.CardFunc(func(ctx context.Context, m *gen.CardMutation) (ent.Value, error) { + m.SetInHook("value was set in hook") if _, ok := m.Name(); !ok { m.SetName("unknown") } @@ -81,6 +82,8 @@ func (Card) Fields() []ent.Field { Comment("Exact name written on card"), field.Time("created_at"). Default(time.Now), + field.String("in_hook"). + Comment("A mandatory field that is set by the hook"), } } diff --git a/entc/integration/hooks/ent/user_create.go b/entc/integration/hooks/ent/user_create.go index 953f226db..3b9b62ba6 100644 --- a/entc/integration/hooks/ent/user_create.go +++ b/entc/integration/hooks/ent/user_create.go @@ -114,14 +114,15 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) + uc.defaults() if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -129,6 +130,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -153,11 +157,19 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (uc *UserCreate) defaults() { if _, ok := uc.mutation.Version(); !ok { v := user.DefaultVersion uc.mutation.SetVersion(v) } +} + +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { + if _, ok := uc.mutation.Version(); !ok { + return &ValidationError{Name: "version", err: errors.New("ent: missing required field \"version\"")} + } if _, ok := uc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -286,14 +298,15 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { for i := range ucb.builders { func(i int, root context.Context) { builder := ucb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/hooks/ent/user_update.go b/entc/integration/hooks/ent/user_update.go index 0f43e3bd4..8c9a41679 100644 --- a/entc/integration/hooks/ent/user_update.go +++ b/entc/integration/hooks/ent/user_update.go @@ -190,7 +190,6 @@ func (uu *UserUpdate) ClearBestFriend() *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -618,7 +617,6 @@ func (uuo *UserUpdateOne) ClearBestFriend() *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - var ( err error node *User diff --git a/entc/integration/idtype/ent/user_create.go b/entc/integration/idtype/ent/user_create.go index 4fdc9bef6..011d1b620 100644 --- a/entc/integration/idtype/ent/user_create.go +++ b/entc/integration/idtype/ent/user_create.go @@ -85,14 +85,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -100,6 +100,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -124,7 +127,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if _, ok := uc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -238,13 +242,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/idtype/ent/user_update.go b/entc/integration/idtype/ent/user_update.go index d541b5aac..574861811 100644 --- a/entc/integration/idtype/ent/user_update.go +++ b/entc/integration/idtype/ent/user_update.go @@ -141,7 +141,6 @@ func (uu *UserUpdate) RemoveFollowing(u ...*User) *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -487,7 +486,6 @@ func (uuo *UserUpdateOne) RemoveFollowing(u ...*User) *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - var ( err error node *User diff --git a/entc/integration/json/ent/user_create.go b/entc/integration/json/ent/user_create.go index 409fc242a..71fd894d2 100644 --- a/entc/integration/json/ent/user_create.go +++ b/entc/integration/json/ent/user_create.go @@ -68,14 +68,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -83,6 +83,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -107,7 +110,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { return nil } @@ -201,13 +205,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/migrate/entv1/car_create.go b/entc/integration/migrate/entv1/car_create.go index 0a647405c..5e6aa2bfe 100644 --- a/entc/integration/migrate/entv1/car_create.go +++ b/entc/integration/migrate/entv1/car_create.go @@ -49,14 +49,14 @@ func (cc *CarCreate) Mutation() *CarMutation { // Save creates the Car in the database. func (cc *CarCreate) Save(ctx context.Context) (*Car, error) { - if err := cc.preSave(); err != nil { - return nil, err - } var ( err error node *Car ) if len(cc.hooks) == 0 { + if err = cc.check(); err != nil { + return nil, err + } node, err = cc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -64,6 +64,9 @@ func (cc *CarCreate) Save(ctx context.Context) (*Car, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cc.check(); err != nil { + return nil, err + } cc.mutation = mutation node, err = cc.sqlSave(ctx) mutation.done = true @@ -88,7 +91,8 @@ func (cc *CarCreate) SaveX(ctx context.Context) *Car { return v } -func (cc *CarCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (cc *CarCreate) check() error { return nil } @@ -153,13 +157,13 @@ func (ccb *CarCreateBulk) Save(ctx context.Context) ([]*Car, error) { func(i int, root context.Context) { builder := ccb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*CarMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/migrate/entv1/car_update.go b/entc/integration/migrate/entv1/car_update.go index 0f69a24f0..17ea9c4da 100644 --- a/entc/integration/migrate/entv1/car_update.go +++ b/entc/integration/migrate/entv1/car_update.go @@ -64,7 +64,6 @@ func (cu *CarUpdate) ClearOwner() *CarUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (cu *CarUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -217,7 +216,6 @@ func (cuo *CarUpdateOne) ClearOwner() *CarUpdateOne { // Save executes the query and returns the updated entity. func (cuo *CarUpdateOne) Save(ctx context.Context) (*Car, error) { - var ( err error node *Car diff --git a/entc/integration/migrate/entv1/user_create.go b/entc/integration/migrate/entv1/user_create.go index 659e41fcd..edd45d3f5 100644 --- a/entc/integration/migrate/entv1/user_create.go +++ b/entc/integration/migrate/entv1/user_create.go @@ -189,14 +189,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -204,6 +204,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -228,7 +231,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if _, ok := uc.mutation.Age(); !ok { return &ValidationError{Name: "age", err: errors.New("entv1: missing required field \"age\"")} } @@ -439,13 +443,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/migrate/entv1/user_update.go b/entc/integration/migrate/entv1/user_update.go index c4c5a04ec..be8a9d98f 100644 --- a/entc/integration/migrate/entv1/user_update.go +++ b/entc/integration/migrate/entv1/user_update.go @@ -267,22 +267,14 @@ func (uu *UserUpdate) ClearCar() *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - if v, ok := uu.mutation.Name(); ok { - if err := user.NameValidator(v); err != nil { - return 0, &ValidationError{Name: "name", err: fmt.Errorf("entv1: validator failed for field \"name\": %w", err)} - } - } - if v, ok := uu.mutation.State(); ok { - if err := user.StateValidator(v); err != nil { - return 0, &ValidationError{Name: "state", err: fmt.Errorf("entv1: validator failed for field \"state\": %w", err)} - } - } - var ( err error affected int ) if len(uu.hooks) == 0 { + if err = uu.check(); err != nil { + return 0, err + } affected, err = uu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -290,6 +282,9 @@ func (uu *UserUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uu.check(); err != nil { + return 0, err + } uu.mutation = mutation affected, err = uu.sqlSave(ctx) mutation.done = true @@ -327,6 +322,21 @@ func (uu *UserUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (uu *UserUpdate) check() error { + if v, ok := uu.mutation.Name(); ok { + if err := user.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("entv1: validator failed for field \"name\": %w", err)} + } + } + if v, ok := uu.mutation.State(); ok { + if err := user.StateValidator(v); err != nil { + return &ValidationError{Name: "state", err: fmt.Errorf("entv1: validator failed for field \"state\": %w", err)} + } + } + return nil +} + func (uu *UserUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -850,22 +860,14 @@ func (uuo *UserUpdateOne) ClearCar() *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - if v, ok := uuo.mutation.Name(); ok { - if err := user.NameValidator(v); err != nil { - return nil, &ValidationError{Name: "name", err: fmt.Errorf("entv1: validator failed for field \"name\": %w", err)} - } - } - if v, ok := uuo.mutation.State(); ok { - if err := user.StateValidator(v); err != nil { - return nil, &ValidationError{Name: "state", err: fmt.Errorf("entv1: validator failed for field \"state\": %w", err)} - } - } - var ( err error node *User ) if len(uuo.hooks) == 0 { + if err = uuo.check(); err != nil { + return nil, err + } node, err = uuo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -873,6 +875,9 @@ func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uuo.check(); err != nil { + return nil, err + } uuo.mutation = mutation node, err = uuo.sqlSave(ctx) mutation.done = true @@ -910,6 +915,21 @@ func (uuo *UserUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (uuo *UserUpdateOne) check() error { + if v, ok := uuo.mutation.Name(); ok { + if err := user.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("entv1: validator failed for field \"name\": %w", err)} + } + } + if v, ok := uuo.mutation.State(); ok { + if err := user.StateValidator(v); err != nil { + return &ValidationError{Name: "state", err: fmt.Errorf("entv1: validator failed for field \"state\": %w", err)} + } + } + return nil +} + func (uuo *UserUpdateOne) sqlSave(ctx context.Context) (u *User, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/entc/integration/migrate/entv2/car_create.go b/entc/integration/migrate/entv2/car_create.go index e64d2c599..2071a3252 100644 --- a/entc/integration/migrate/entv2/car_create.go +++ b/entc/integration/migrate/entv2/car_create.go @@ -49,14 +49,14 @@ func (cc *CarCreate) Mutation() *CarMutation { // Save creates the Car in the database. func (cc *CarCreate) Save(ctx context.Context) (*Car, error) { - if err := cc.preSave(); err != nil { - return nil, err - } var ( err error node *Car ) if len(cc.hooks) == 0 { + if err = cc.check(); err != nil { + return nil, err + } node, err = cc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -64,6 +64,9 @@ func (cc *CarCreate) Save(ctx context.Context) (*Car, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cc.check(); err != nil { + return nil, err + } cc.mutation = mutation node, err = cc.sqlSave(ctx) mutation.done = true @@ -88,7 +91,8 @@ func (cc *CarCreate) SaveX(ctx context.Context) *Car { return v } -func (cc *CarCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (cc *CarCreate) check() error { return nil } @@ -153,13 +157,13 @@ func (ccb *CarCreateBulk) Save(ctx context.Context) ([]*Car, error) { func(i int, root context.Context) { builder := ccb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*CarMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/migrate/entv2/car_update.go b/entc/integration/migrate/entv2/car_update.go index a2ffc9c5e..7c3dc752b 100644 --- a/entc/integration/migrate/entv2/car_update.go +++ b/entc/integration/migrate/entv2/car_update.go @@ -64,7 +64,6 @@ func (cu *CarUpdate) ClearOwner() *CarUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (cu *CarUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -217,7 +216,6 @@ func (cuo *CarUpdateOne) ClearOwner() *CarUpdateOne { // Save executes the query and returns the updated entity. func (cuo *CarUpdateOne) Save(ctx context.Context) (*Car, error) { - var ( err error node *Car diff --git a/entc/integration/migrate/entv2/group_create.go b/entc/integration/migrate/entv2/group_create.go index 60e85dcb4..2d6552934 100644 --- a/entc/integration/migrate/entv2/group_create.go +++ b/entc/integration/migrate/entv2/group_create.go @@ -29,14 +29,14 @@ func (gc *GroupCreate) Mutation() *GroupMutation { // Save creates the Group in the database. func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { - if err := gc.preSave(); err != nil { - return nil, err - } var ( err error node *Group ) if len(gc.hooks) == 0 { + if err = gc.check(); err != nil { + return nil, err + } node, err = gc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -44,6 +44,9 @@ func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gc.check(); err != nil { + return nil, err + } gc.mutation = mutation node, err = gc.sqlSave(ctx) mutation.done = true @@ -68,7 +71,8 @@ func (gc *GroupCreate) SaveX(ctx context.Context) *Group { return v } -func (gc *GroupCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (gc *GroupCreate) check() error { return nil } @@ -114,13 +118,13 @@ func (gcb *GroupCreateBulk) Save(ctx context.Context) ([]*Group, error) { func(i int, root context.Context) { builder := gcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*GroupMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/migrate/entv2/pet_create.go b/entc/integration/migrate/entv2/pet_create.go index b307dda16..7fd3264df 100644 --- a/entc/integration/migrate/entv2/pet_create.go +++ b/entc/integration/migrate/entv2/pet_create.go @@ -49,14 +49,14 @@ func (pc *PetCreate) Mutation() *PetMutation { // Save creates the Pet in the database. func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { - if err := pc.preSave(); err != nil { - return nil, err - } var ( err error node *Pet ) if len(pc.hooks) == 0 { + if err = pc.check(); err != nil { + return nil, err + } node, err = pc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -64,6 +64,9 @@ func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = pc.check(); err != nil { + return nil, err + } pc.mutation = mutation node, err = pc.sqlSave(ctx) mutation.done = true @@ -88,7 +91,8 @@ func (pc *PetCreate) SaveX(ctx context.Context) *Pet { return v } -func (pc *PetCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (pc *PetCreate) check() error { return nil } @@ -153,13 +157,13 @@ func (pcb *PetCreateBulk) Save(ctx context.Context) ([]*Pet, error) { func(i int, root context.Context) { builder := pcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*PetMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/migrate/entv2/pet_update.go b/entc/integration/migrate/entv2/pet_update.go index 2ccaf76ed..6a15508d2 100644 --- a/entc/integration/migrate/entv2/pet_update.go +++ b/entc/integration/migrate/entv2/pet_update.go @@ -64,7 +64,6 @@ func (pu *PetUpdate) ClearOwner() *PetUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (pu *PetUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -217,7 +216,6 @@ func (puo *PetUpdateOne) ClearOwner() *PetUpdateOne { // Save executes the query and returns the updated entity. func (puo *PetUpdateOne) Save(ctx context.Context) (*Pet, error) { - var ( err error node *Pet diff --git a/entc/integration/migrate/entv2/user_create.go b/entc/integration/migrate/entv2/user_create.go index cbccfe3b0..bcfe3a2fc 100644 --- a/entc/integration/migrate/entv2/user_create.go +++ b/entc/integration/migrate/entv2/user_create.go @@ -215,14 +215,15 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) + uc.defaults() if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -230,6 +231,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -254,7 +258,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (uc *UserCreate) defaults() { if _, ok := uc.mutation.MixedString(); !ok { v := user.DefaultMixedString uc.mutation.SetMixedString(v) @@ -263,6 +268,24 @@ func (uc *UserCreate) preSave() error { v := user.DefaultMixedEnum uc.mutation.SetMixedEnum(v) } + if _, ok := uc.mutation.Phone(); !ok { + v := user.DefaultPhone + uc.mutation.SetPhone(v) + } + if _, ok := uc.mutation.Title(); !ok { + v := user.DefaultTitle + uc.mutation.SetTitle(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { + if _, ok := uc.mutation.MixedString(); !ok { + return &ValidationError{Name: "mixed_string", err: errors.New("entv2: missing required field \"mixed_string\"")} + } + if _, ok := uc.mutation.MixedEnum(); !ok { + return &ValidationError{Name: "mixed_enum", err: errors.New("entv2: missing required field \"mixed_enum\"")} + } if v, ok := uc.mutation.MixedEnum(); ok { if err := user.MixedEnumValidator(v); err != nil { return &ValidationError{Name: "mixed_enum", err: fmt.Errorf("entv2: validator failed for field \"mixed_enum\": %w", err)} @@ -278,12 +301,10 @@ func (uc *UserCreate) preSave() error { return &ValidationError{Name: "nickname", err: errors.New("entv2: missing required field \"nickname\"")} } if _, ok := uc.mutation.Phone(); !ok { - v := user.DefaultPhone - uc.mutation.SetPhone(v) + return &ValidationError{Name: "phone", err: errors.New("entv2: missing required field \"phone\"")} } if _, ok := uc.mutation.Title(); !ok { - v := user.DefaultTitle - uc.mutation.SetTitle(v) + return &ValidationError{Name: "title", err: errors.New("entv2: missing required field \"title\"")} } if v, ok := uc.mutation.State(); ok { if err := user.StateValidator(v); err != nil { @@ -498,14 +519,15 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { for i := range ucb.builders { func(i int, root context.Context) { builder := ucb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/migrate/entv2/user_update.go b/entc/integration/migrate/entv2/user_update.go index 92cb1a105..f4dca82a1 100644 --- a/entc/integration/migrate/entv2/user_update.go +++ b/entc/integration/migrate/entv2/user_update.go @@ -302,27 +302,14 @@ func (uu *UserUpdate) RemoveFriends(u ...*User) *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - if v, ok := uu.mutation.MixedEnum(); ok { - if err := user.MixedEnumValidator(v); err != nil { - return 0, &ValidationError{Name: "mixed_enum", err: fmt.Errorf("entv2: validator failed for field \"mixed_enum\": %w", err)} - } - } - if v, ok := uu.mutation.State(); ok { - if err := user.StateValidator(v); err != nil { - return 0, &ValidationError{Name: "state", err: fmt.Errorf("entv2: validator failed for field \"state\": %w", err)} - } - } - if v, ok := uu.mutation.Status(); ok { - if err := user.StatusValidator(v); err != nil { - return 0, &ValidationError{Name: "status", err: fmt.Errorf("entv2: validator failed for field \"status\": %w", err)} - } - } - var ( err error affected int ) if len(uu.hooks) == 0 { + if err = uu.check(); err != nil { + return 0, err + } affected, err = uu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -330,6 +317,9 @@ func (uu *UserUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uu.check(); err != nil { + return 0, err + } uu.mutation = mutation affected, err = uu.sqlSave(ctx) mutation.done = true @@ -367,6 +357,26 @@ func (uu *UserUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (uu *UserUpdate) check() error { + if v, ok := uu.mutation.MixedEnum(); ok { + if err := user.MixedEnumValidator(v); err != nil { + return &ValidationError{Name: "mixed_enum", err: fmt.Errorf("entv2: validator failed for field \"mixed_enum\": %w", err)} + } + } + if v, ok := uu.mutation.State(); ok { + if err := user.StateValidator(v); err != nil { + return &ValidationError{Name: "state", err: fmt.Errorf("entv2: validator failed for field \"state\": %w", err)} + } + } + if v, ok := uu.mutation.Status(); ok { + if err := user.StatusValidator(v); err != nil { + return &ValidationError{Name: "status", err: fmt.Errorf("entv2: validator failed for field \"status\": %w", err)} + } + } + return nil +} + func (uu *UserUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -936,27 +946,14 @@ func (uuo *UserUpdateOne) RemoveFriends(u ...*User) *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - if v, ok := uuo.mutation.MixedEnum(); ok { - if err := user.MixedEnumValidator(v); err != nil { - return nil, &ValidationError{Name: "mixed_enum", err: fmt.Errorf("entv2: validator failed for field \"mixed_enum\": %w", err)} - } - } - if v, ok := uuo.mutation.State(); ok { - if err := user.StateValidator(v); err != nil { - return nil, &ValidationError{Name: "state", err: fmt.Errorf("entv2: validator failed for field \"state\": %w", err)} - } - } - if v, ok := uuo.mutation.Status(); ok { - if err := user.StatusValidator(v); err != nil { - return nil, &ValidationError{Name: "status", err: fmt.Errorf("entv2: validator failed for field \"status\": %w", err)} - } - } - var ( err error node *User ) if len(uuo.hooks) == 0 { + if err = uuo.check(); err != nil { + return nil, err + } node, err = uuo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -964,6 +961,9 @@ func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uuo.check(); err != nil { + return nil, err + } uuo.mutation = mutation node, err = uuo.sqlSave(ctx) mutation.done = true @@ -1001,6 +1001,26 @@ func (uuo *UserUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (uuo *UserUpdateOne) check() error { + if v, ok := uuo.mutation.MixedEnum(); ok { + if err := user.MixedEnumValidator(v); err != nil { + return &ValidationError{Name: "mixed_enum", err: fmt.Errorf("entv2: validator failed for field \"mixed_enum\": %w", err)} + } + } + if v, ok := uuo.mutation.State(); ok { + if err := user.StateValidator(v); err != nil { + return &ValidationError{Name: "state", err: fmt.Errorf("entv2: validator failed for field \"state\": %w", err)} + } + } + if v, ok := uuo.mutation.Status(); ok { + if err := user.StatusValidator(v); err != nil { + return &ValidationError{Name: "status", err: fmt.Errorf("entv2: validator failed for field \"status\": %w", err)} + } + } + return nil +} + func (uuo *UserUpdateOne) sqlSave(ctx context.Context) (u *User, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/entc/integration/privacy/ent/galaxy_create.go b/entc/integration/privacy/ent/galaxy_create.go index 379ab619e..be9dc4c8c 100644 --- a/entc/integration/privacy/ent/galaxy_create.go +++ b/entc/integration/privacy/ent/galaxy_create.go @@ -58,14 +58,14 @@ func (gc *GalaxyCreate) Mutation() *GalaxyMutation { // Save creates the Galaxy in the database. func (gc *GalaxyCreate) Save(ctx context.Context) (*Galaxy, error) { - if err := gc.preSave(); err != nil { - return nil, err - } var ( err error node *Galaxy ) if len(gc.hooks) == 0 { + if err = gc.check(); err != nil { + return nil, err + } node, err = gc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -73,6 +73,9 @@ func (gc *GalaxyCreate) Save(ctx context.Context) (*Galaxy, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gc.check(); err != nil { + return nil, err + } gc.mutation = mutation node, err = gc.sqlSave(ctx) mutation.done = true @@ -97,7 +100,8 @@ func (gc *GalaxyCreate) SaveX(ctx context.Context) *Galaxy { return v } -func (gc *GalaxyCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (gc *GalaxyCreate) check() error { if _, ok := gc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -194,13 +198,13 @@ func (gcb *GalaxyCreateBulk) Save(ctx context.Context) ([]*Galaxy, error) { func(i int, root context.Context) { builder := gcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*GalaxyMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/privacy/ent/galaxy_update.go b/entc/integration/privacy/ent/galaxy_update.go index a842f6571..a957db2b2 100644 --- a/entc/integration/privacy/ent/galaxy_update.go +++ b/entc/integration/privacy/ent/galaxy_update.go @@ -87,22 +87,14 @@ func (gu *GalaxyUpdate) RemovePlanets(p ...*Planet) *GalaxyUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (gu *GalaxyUpdate) Save(ctx context.Context) (int, error) { - if v, ok := gu.mutation.Name(); ok { - if err := galaxy.NameValidator(v); err != nil { - return 0, &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} - } - } - if v, ok := gu.mutation.GetType(); ok { - if err := galaxy.TypeValidator(v); err != nil { - return 0, &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} - } - } - var ( err error affected int ) if len(gu.hooks) == 0 { + if err = gu.check(); err != nil { + return 0, err + } affected, err = gu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -110,6 +102,9 @@ func (gu *GalaxyUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gu.check(); err != nil { + return 0, err + } gu.mutation = mutation affected, err = gu.sqlSave(ctx) mutation.done = true @@ -147,6 +142,21 @@ func (gu *GalaxyUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (gu *GalaxyUpdate) check() error { + if v, ok := gu.mutation.Name(); ok { + if err := galaxy.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} + } + } + if v, ok := gu.mutation.GetType(); ok { + if err := galaxy.TypeValidator(v); err != nil { + return &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} + } + } + return nil +} + func (gu *GalaxyUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -306,22 +316,14 @@ func (guo *GalaxyUpdateOne) RemovePlanets(p ...*Planet) *GalaxyUpdateOne { // Save executes the query and returns the updated entity. func (guo *GalaxyUpdateOne) Save(ctx context.Context) (*Galaxy, error) { - if v, ok := guo.mutation.Name(); ok { - if err := galaxy.NameValidator(v); err != nil { - return nil, &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} - } - } - if v, ok := guo.mutation.GetType(); ok { - if err := galaxy.TypeValidator(v); err != nil { - return nil, &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} - } - } - var ( err error node *Galaxy ) if len(guo.hooks) == 0 { + if err = guo.check(); err != nil { + return nil, err + } node, err = guo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -329,6 +331,9 @@ func (guo *GalaxyUpdateOne) Save(ctx context.Context) (*Galaxy, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = guo.check(); err != nil { + return nil, err + } guo.mutation = mutation node, err = guo.sqlSave(ctx) mutation.done = true @@ -366,6 +371,21 @@ func (guo *GalaxyUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (guo *GalaxyUpdateOne) check() error { + if v, ok := guo.mutation.Name(); ok { + if err := galaxy.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} + } + } + if v, ok := guo.mutation.GetType(); ok { + if err := galaxy.TypeValidator(v); err != nil { + return &ValidationError{Name: "type", err: fmt.Errorf("ent: validator failed for field \"type\": %w", err)} + } + } + return nil +} + func (guo *GalaxyUpdateOne) sqlSave(ctx context.Context) (ga *Galaxy, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/entc/integration/privacy/ent/planet_create.go b/entc/integration/privacy/ent/planet_create.go index 7b37f06ee..bd604ada9 100644 --- a/entc/integration/privacy/ent/planet_create.go +++ b/entc/integration/privacy/ent/planet_create.go @@ -65,14 +65,14 @@ func (pc *PlanetCreate) Mutation() *PlanetMutation { // Save creates the Planet in the database. func (pc *PlanetCreate) Save(ctx context.Context) (*Planet, error) { - if err := pc.preSave(); err != nil { - return nil, err - } var ( err error node *Planet ) if len(pc.hooks) == 0 { + if err = pc.check(); err != nil { + return nil, err + } node, err = pc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -80,6 +80,9 @@ func (pc *PlanetCreate) Save(ctx context.Context) (*Planet, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = pc.check(); err != nil { + return nil, err + } pc.mutation = mutation node, err = pc.sqlSave(ctx) mutation.done = true @@ -104,7 +107,8 @@ func (pc *PlanetCreate) SaveX(ctx context.Context) *Planet { return v } -func (pc *PlanetCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (pc *PlanetCreate) check() error { if _, ok := pc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -193,13 +197,13 @@ func (pcb *PlanetCreateBulk) Save(ctx context.Context) ([]*Planet, error) { func(i int, root context.Context) { builder := pcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*PlanetMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/privacy/ent/planet_update.go b/entc/integration/privacy/ent/planet_update.go index dffc218a0..3393b155c 100644 --- a/entc/integration/privacy/ent/planet_update.go +++ b/entc/integration/privacy/ent/planet_update.go @@ -101,7 +101,6 @@ func (pu *PlanetUpdate) RemoveNeighbors(p ...*Planet) *PlanetUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (pu *PlanetUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -331,7 +330,6 @@ func (puo *PlanetUpdateOne) RemoveNeighbors(p ...*Planet) *PlanetUpdateOne { // Save executes the query and returns the updated entity. func (puo *PlanetUpdateOne) Save(ctx context.Context) (*Planet, error) { - var ( err error node *Planet diff --git a/entc/integration/template/ent/group_create.go b/entc/integration/template/ent/group_create.go index d087c1900..28f710a43 100644 --- a/entc/integration/template/ent/group_create.go +++ b/entc/integration/template/ent/group_create.go @@ -36,14 +36,14 @@ func (gc *GroupCreate) Mutation() *GroupMutation { // Save creates the Group in the database. func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { - if err := gc.preSave(); err != nil { - return nil, err - } var ( err error node *Group ) if len(gc.hooks) == 0 { + if err = gc.check(); err != nil { + return nil, err + } node, err = gc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -51,6 +51,9 @@ func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gc.check(); err != nil { + return nil, err + } gc.mutation = mutation node, err = gc.sqlSave(ctx) mutation.done = true @@ -75,7 +78,8 @@ func (gc *GroupCreate) SaveX(ctx context.Context) *Group { return v } -func (gc *GroupCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (gc *GroupCreate) check() error { if _, ok := gc.mutation.MaxUsers(); !ok { return &ValidationError{Name: "max_users", err: errors.New("ent: missing required field \"max_users\"")} } @@ -132,13 +136,13 @@ func (gcb *GroupCreateBulk) Save(ctx context.Context) ([]*Group, error) { func(i int, root context.Context) { builder := gcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*GroupMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/template/ent/pet_create.go b/entc/integration/template/ent/pet_create.go index 8aceebe17..1b09d5940 100644 --- a/entc/integration/template/ent/pet_create.go +++ b/entc/integration/template/ent/pet_create.go @@ -71,14 +71,14 @@ func (pc *PetCreate) Mutation() *PetMutation { // Save creates the Pet in the database. func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { - if err := pc.preSave(); err != nil { - return nil, err - } var ( err error node *Pet ) if len(pc.hooks) == 0 { + if err = pc.check(); err != nil { + return nil, err + } node, err = pc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -86,6 +86,9 @@ func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = pc.check(); err != nil { + return nil, err + } pc.mutation = mutation node, err = pc.sqlSave(ctx) mutation.done = true @@ -110,7 +113,8 @@ func (pc *PetCreate) SaveX(ctx context.Context) *Pet { return v } -func (pc *PetCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (pc *PetCreate) check() error { if _, ok := pc.mutation.Age(); !ok { return &ValidationError{Name: "age", err: errors.New("ent: missing required field \"age\"")} } @@ -194,13 +198,13 @@ func (pcb *PetCreateBulk) Save(ctx context.Context) ([]*Pet, error) { func(i int, root context.Context) { builder := pcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*PetMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/template/ent/pet_update.go b/entc/integration/template/ent/pet_update.go index dde22bd6c..50e2bc792 100644 --- a/entc/integration/template/ent/pet_update.go +++ b/entc/integration/template/ent/pet_update.go @@ -98,7 +98,6 @@ func (pu *PetUpdate) ClearOwner() *PetUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (pu *PetUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -311,7 +310,6 @@ func (puo *PetUpdateOne) ClearOwner() *PetUpdateOne { // Save executes the query and returns the updated entity. func (puo *PetUpdateOne) Save(ctx context.Context) (*Pet, error) { - var ( err error node *Pet diff --git a/entc/integration/template/ent/user_create.go b/entc/integration/template/ent/user_create.go index aede1ddbb..89d8c079d 100644 --- a/entc/integration/template/ent/user_create.go +++ b/entc/integration/template/ent/user_create.go @@ -67,14 +67,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -82,6 +82,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -106,7 +109,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if _, ok := uc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -201,13 +205,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/entc/integration/template/ent/user_update.go b/entc/integration/template/ent/user_update.go index 03052ad8e..f24372a10 100644 --- a/entc/integration/template/ent/user_update.go +++ b/entc/integration/template/ent/user_update.go @@ -117,7 +117,6 @@ func (uu *UserUpdate) RemoveFriends(u ...*User) *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -403,7 +402,6 @@ func (uuo *UserUpdateOne) RemoveFriends(u ...*User) *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - var ( err error node *User diff --git a/examples/edgeindex/ent/city_create.go b/examples/edgeindex/ent/city_create.go index 1264e3037..77d2f9122 100644 --- a/examples/edgeindex/ent/city_create.go +++ b/examples/edgeindex/ent/city_create.go @@ -52,14 +52,14 @@ func (cc *CityCreate) Mutation() *CityMutation { // Save creates the City in the database. func (cc *CityCreate) Save(ctx context.Context) (*City, error) { - if err := cc.preSave(); err != nil { - return nil, err - } var ( err error node *City ) if len(cc.hooks) == 0 { + if err = cc.check(); err != nil { + return nil, err + } node, err = cc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -67,6 +67,9 @@ func (cc *CityCreate) Save(ctx context.Context) (*City, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cc.check(); err != nil { + return nil, err + } cc.mutation = mutation node, err = cc.sqlSave(ctx) mutation.done = true @@ -91,7 +94,8 @@ func (cc *CityCreate) SaveX(ctx context.Context) *City { return v } -func (cc *CityCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (cc *CityCreate) check() error { if _, ok := cc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -167,13 +171,13 @@ func (ccb *CityCreateBulk) Save(ctx context.Context) ([]*City, error) { func(i int, root context.Context) { builder := ccb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*CityMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/edgeindex/ent/city_update.go b/examples/edgeindex/ent/city_update.go index ac91dccf8..063eb9455 100644 --- a/examples/edgeindex/ent/city_update.go +++ b/examples/edgeindex/ent/city_update.go @@ -81,7 +81,6 @@ func (cu *CityUpdate) RemoveStreets(s ...*Street) *CityUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (cu *CityUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -277,7 +276,6 @@ func (cuo *CityUpdateOne) RemoveStreets(s ...*Street) *CityUpdateOne { // Save executes the query and returns the updated entity. func (cuo *CityUpdateOne) Save(ctx context.Context) (*City, error) { - var ( err error node *City diff --git a/examples/edgeindex/ent/street_create.go b/examples/edgeindex/ent/street_create.go index c10bee69d..740d4cdb3 100644 --- a/examples/edgeindex/ent/street_create.go +++ b/examples/edgeindex/ent/street_create.go @@ -56,14 +56,14 @@ func (sc *StreetCreate) Mutation() *StreetMutation { // Save creates the Street in the database. func (sc *StreetCreate) Save(ctx context.Context) (*Street, error) { - if err := sc.preSave(); err != nil { - return nil, err - } var ( err error node *Street ) if len(sc.hooks) == 0 { + if err = sc.check(); err != nil { + return nil, err + } node, err = sc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -71,6 +71,9 @@ func (sc *StreetCreate) Save(ctx context.Context) (*Street, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = sc.check(); err != nil { + return nil, err + } sc.mutation = mutation node, err = sc.sqlSave(ctx) mutation.done = true @@ -95,7 +98,8 @@ func (sc *StreetCreate) SaveX(ctx context.Context) *Street { return v } -func (sc *StreetCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (sc *StreetCreate) check() error { if _, ok := sc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -171,13 +175,13 @@ func (scb *StreetCreateBulk) Save(ctx context.Context) ([]*Street, error) { func(i int, root context.Context) { builder := scb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*StreetMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/edgeindex/ent/street_update.go b/examples/edgeindex/ent/street_update.go index 7ce9a2e64..2d418da9f 100644 --- a/examples/edgeindex/ent/street_update.go +++ b/examples/edgeindex/ent/street_update.go @@ -70,7 +70,6 @@ func (su *StreetUpdate) ClearCity() *StreetUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (su *StreetUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -236,7 +235,6 @@ func (suo *StreetUpdateOne) ClearCity() *StreetUpdateOne { // Save executes the query and returns the updated entity. func (suo *StreetUpdateOne) Save(ctx context.Context) (*Street, error) { - var ( err error node *Street diff --git a/examples/entcpkg/ent/user_create.go b/examples/entcpkg/ent/user_create.go index cecb8d5c1..e75f4e56e 100644 --- a/examples/entcpkg/ent/user_create.go +++ b/examples/entcpkg/ent/user_create.go @@ -29,14 +29,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -44,6 +44,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -68,7 +71,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { return nil } @@ -114,13 +118,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/m2m2types/ent/group_create.go b/examples/m2m2types/ent/group_create.go index 86509e593..136db07c3 100644 --- a/examples/m2m2types/ent/group_create.go +++ b/examples/m2m2types/ent/group_create.go @@ -52,14 +52,14 @@ func (gc *GroupCreate) Mutation() *GroupMutation { // Save creates the Group in the database. func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { - if err := gc.preSave(); err != nil { - return nil, err - } var ( err error node *Group ) if len(gc.hooks) == 0 { + if err = gc.check(); err != nil { + return nil, err + } node, err = gc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -67,6 +67,9 @@ func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gc.check(); err != nil { + return nil, err + } gc.mutation = mutation node, err = gc.sqlSave(ctx) mutation.done = true @@ -91,7 +94,8 @@ func (gc *GroupCreate) SaveX(ctx context.Context) *Group { return v } -func (gc *GroupCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (gc *GroupCreate) check() error { if _, ok := gc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -167,13 +171,13 @@ func (gcb *GroupCreateBulk) Save(ctx context.Context) ([]*Group, error) { func(i int, root context.Context) { builder := gcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*GroupMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/m2m2types/ent/group_update.go b/examples/m2m2types/ent/group_update.go index a35f26c87..d50b5f666 100644 --- a/examples/m2m2types/ent/group_update.go +++ b/examples/m2m2types/ent/group_update.go @@ -81,7 +81,6 @@ func (gu *GroupUpdate) RemoveUsers(u ...*User) *GroupUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (gu *GroupUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -277,7 +276,6 @@ func (guo *GroupUpdateOne) RemoveUsers(u ...*User) *GroupUpdateOne { // Save executes the query and returns the updated entity. func (guo *GroupUpdateOne) Save(ctx context.Context) (*Group, error) { - var ( err error node *Group diff --git a/examples/m2m2types/ent/user_create.go b/examples/m2m2types/ent/user_create.go index 213055ade..d441ce428 100644 --- a/examples/m2m2types/ent/user_create.go +++ b/examples/m2m2types/ent/user_create.go @@ -58,14 +58,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -73,6 +73,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -97,7 +100,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if _, ok := uc.mutation.Age(); !ok { return &ValidationError{Name: "age", err: errors.New("ent: missing required field \"age\"")} } @@ -184,13 +188,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/m2m2types/ent/user_update.go b/examples/m2m2types/ent/user_update.go index 07ba5ba12..a9ebf8388 100644 --- a/examples/m2m2types/ent/user_update.go +++ b/examples/m2m2types/ent/user_update.go @@ -94,7 +94,6 @@ func (uu *UserUpdate) RemoveGroups(g ...*Group) *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -317,7 +316,6 @@ func (uuo *UserUpdateOne) RemoveGroups(g ...*Group) *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - var ( err error node *User diff --git a/examples/m2mbidi/ent/user_create.go b/examples/m2mbidi/ent/user_create.go index bed334c12..599d51426 100644 --- a/examples/m2mbidi/ent/user_create.go +++ b/examples/m2mbidi/ent/user_create.go @@ -57,14 +57,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -72,6 +72,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -96,7 +99,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if _, ok := uc.mutation.Age(); !ok { return &ValidationError{Name: "age", err: errors.New("ent: missing required field \"age\"")} } @@ -183,13 +187,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/m2mbidi/ent/user_update.go b/examples/m2mbidi/ent/user_update.go index 8ae5b3988..fabf382f7 100644 --- a/examples/m2mbidi/ent/user_update.go +++ b/examples/m2mbidi/ent/user_update.go @@ -93,7 +93,6 @@ func (uu *UserUpdate) RemoveFriends(u ...*User) *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -316,7 +315,6 @@ func (uuo *UserUpdateOne) RemoveFriends(u ...*User) *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - var ( err error node *User diff --git a/examples/m2mrecur/ent/user_create.go b/examples/m2mrecur/ent/user_create.go index 55b3c3e6a..eee060cf9 100644 --- a/examples/m2mrecur/ent/user_create.go +++ b/examples/m2mrecur/ent/user_create.go @@ -72,14 +72,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -87,6 +87,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -111,7 +114,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if _, ok := uc.mutation.Age(); !ok { return &ValidationError{Name: "age", err: errors.New("ent: missing required field \"age\"")} } @@ -217,13 +221,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/m2mrecur/ent/user_update.go b/examples/m2mrecur/ent/user_update.go index 638876a29..6de99271d 100644 --- a/examples/m2mrecur/ent/user_update.go +++ b/examples/m2mrecur/ent/user_update.go @@ -129,7 +129,6 @@ func (uu *UserUpdate) RemoveFollowing(u ...*User) *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -442,7 +441,6 @@ func (uuo *UserUpdateOne) RemoveFollowing(u ...*User) *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - var ( err error node *User diff --git a/examples/o2m2types/ent/pet_create.go b/examples/o2m2types/ent/pet_create.go index 39e9a7e3f..6654b1ab9 100644 --- a/examples/o2m2types/ent/pet_create.go +++ b/examples/o2m2types/ent/pet_create.go @@ -56,14 +56,14 @@ func (pc *PetCreate) Mutation() *PetMutation { // Save creates the Pet in the database. func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { - if err := pc.preSave(); err != nil { - return nil, err - } var ( err error node *Pet ) if len(pc.hooks) == 0 { + if err = pc.check(); err != nil { + return nil, err + } node, err = pc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -71,6 +71,9 @@ func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = pc.check(); err != nil { + return nil, err + } pc.mutation = mutation node, err = pc.sqlSave(ctx) mutation.done = true @@ -95,7 +98,8 @@ func (pc *PetCreate) SaveX(ctx context.Context) *Pet { return v } -func (pc *PetCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (pc *PetCreate) check() error { if _, ok := pc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -171,13 +175,13 @@ func (pcb *PetCreateBulk) Save(ctx context.Context) ([]*Pet, error) { func(i int, root context.Context) { builder := pcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*PetMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/o2m2types/ent/pet_update.go b/examples/o2m2types/ent/pet_update.go index 316d1b5c1..b8daa3ee7 100644 --- a/examples/o2m2types/ent/pet_update.go +++ b/examples/o2m2types/ent/pet_update.go @@ -70,7 +70,6 @@ func (pu *PetUpdate) ClearOwner() *PetUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (pu *PetUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -236,7 +235,6 @@ func (puo *PetUpdateOne) ClearOwner() *PetUpdateOne { // Save executes the query and returns the updated entity. func (puo *PetUpdateOne) Save(ctx context.Context) (*Pet, error) { - var ( err error node *Pet diff --git a/examples/o2m2types/ent/user_create.go b/examples/o2m2types/ent/user_create.go index 287a80c9b..ea758ac0f 100644 --- a/examples/o2m2types/ent/user_create.go +++ b/examples/o2m2types/ent/user_create.go @@ -58,14 +58,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -73,6 +73,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -97,7 +100,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if _, ok := uc.mutation.Age(); !ok { return &ValidationError{Name: "age", err: errors.New("ent: missing required field \"age\"")} } @@ -184,13 +188,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/o2m2types/ent/user_update.go b/examples/o2m2types/ent/user_update.go index 903882bb2..77bde5ec1 100644 --- a/examples/o2m2types/ent/user_update.go +++ b/examples/o2m2types/ent/user_update.go @@ -94,7 +94,6 @@ func (uu *UserUpdate) RemovePets(p ...*Pet) *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -317,7 +316,6 @@ func (uuo *UserUpdateOne) RemovePets(p ...*Pet) *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - var ( err error node *User diff --git a/examples/o2mrecur/ent/node_create.go b/examples/o2mrecur/ent/node_create.go index dca928df8..16a8ca0c9 100644 --- a/examples/o2mrecur/ent/node_create.go +++ b/examples/o2mrecur/ent/node_create.go @@ -70,14 +70,14 @@ func (nc *NodeCreate) Mutation() *NodeMutation { // Save creates the Node in the database. func (nc *NodeCreate) Save(ctx context.Context) (*Node, error) { - if err := nc.preSave(); err != nil { - return nil, err - } var ( err error node *Node ) if len(nc.hooks) == 0 { + if err = nc.check(); err != nil { + return nil, err + } node, err = nc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -85,6 +85,9 @@ func (nc *NodeCreate) Save(ctx context.Context) (*Node, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = nc.check(); err != nil { + return nil, err + } nc.mutation = mutation node, err = nc.sqlSave(ctx) mutation.done = true @@ -109,7 +112,8 @@ func (nc *NodeCreate) SaveX(ctx context.Context) *Node { return v } -func (nc *NodeCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (nc *NodeCreate) check() error { if _, ok := nc.mutation.Value(); !ok { return &ValidationError{Name: "value", err: errors.New("ent: missing required field \"value\"")} } @@ -204,13 +208,13 @@ func (ncb *NodeCreateBulk) Save(ctx context.Context) ([]*Node, error) { func(i int, root context.Context) { builder := ncb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*NodeMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/o2mrecur/ent/node_update.go b/examples/o2mrecur/ent/node_update.go index b35fd09f0..d9395497e 100644 --- a/examples/o2mrecur/ent/node_update.go +++ b/examples/o2mrecur/ent/node_update.go @@ -112,7 +112,6 @@ func (nu *NodeUpdate) RemoveChildren(n ...*Node) *NodeUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (nu *NodeUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -382,7 +381,6 @@ func (nuo *NodeUpdateOne) RemoveChildren(n ...*Node) *NodeUpdateOne { // Save executes the query and returns the updated entity. func (nuo *NodeUpdateOne) Save(ctx context.Context) (*Node, error) { - var ( err error node *Node diff --git a/examples/o2o2types/ent/card_create.go b/examples/o2o2types/ent/card_create.go index 282c5d913..ec8aad094 100644 --- a/examples/o2o2types/ent/card_create.go +++ b/examples/o2o2types/ent/card_create.go @@ -55,14 +55,14 @@ func (cc *CardCreate) Mutation() *CardMutation { // Save creates the Card in the database. func (cc *CardCreate) Save(ctx context.Context) (*Card, error) { - if err := cc.preSave(); err != nil { - return nil, err - } var ( err error node *Card ) if len(cc.hooks) == 0 { + if err = cc.check(); err != nil { + return nil, err + } node, err = cc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -70,6 +70,9 @@ func (cc *CardCreate) Save(ctx context.Context) (*Card, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cc.check(); err != nil { + return nil, err + } cc.mutation = mutation node, err = cc.sqlSave(ctx) mutation.done = true @@ -94,7 +97,8 @@ func (cc *CardCreate) SaveX(ctx context.Context) *Card { return v } -func (cc *CardCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (cc *CardCreate) check() error { if _, ok := cc.mutation.Expired(); !ok { return &ValidationError{Name: "expired", err: errors.New("ent: missing required field \"expired\"")} } @@ -184,13 +188,13 @@ func (ccb *CardCreateBulk) Save(ctx context.Context) ([]*Card, error) { func(i int, root context.Context) { builder := ccb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*CardMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/o2o2types/ent/card_update.go b/examples/o2o2types/ent/card_update.go index 8bc1fad52..d952c2565 100644 --- a/examples/o2o2types/ent/card_update.go +++ b/examples/o2o2types/ent/card_update.go @@ -70,15 +70,14 @@ func (cu *CardUpdate) ClearOwner() *CardUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (cu *CardUpdate) Save(ctx context.Context) (int, error) { - - if _, ok := cu.mutation.OwnerID(); cu.mutation.OwnerCleared() && !ok { - return 0, errors.New("ent: clearing a unique edge \"owner\"") - } var ( err error affected int ) if len(cu.hooks) == 0 { + if err = cu.check(); err != nil { + return 0, err + } affected, err = cu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -86,6 +85,9 @@ func (cu *CardUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cu.check(); err != nil { + return 0, err + } cu.mutation = mutation affected, err = cu.sqlSave(ctx) mutation.done = true @@ -123,6 +125,14 @@ func (cu *CardUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (cu *CardUpdate) check() error { + if _, ok := cu.mutation.OwnerID(); cu.mutation.OwnerCleared() && !ok { + return errors.New("ent: clearing a required unique edge \"owner\"") + } + return nil +} + func (cu *CardUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -244,15 +254,14 @@ func (cuo *CardUpdateOne) ClearOwner() *CardUpdateOne { // Save executes the query and returns the updated entity. func (cuo *CardUpdateOne) Save(ctx context.Context) (*Card, error) { - - if _, ok := cuo.mutation.OwnerID(); cuo.mutation.OwnerCleared() && !ok { - return nil, errors.New("ent: clearing a unique edge \"owner\"") - } var ( err error node *Card ) if len(cuo.hooks) == 0 { + if err = cuo.check(); err != nil { + return nil, err + } node, err = cuo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -260,6 +269,9 @@ func (cuo *CardUpdateOne) Save(ctx context.Context) (*Card, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cuo.check(); err != nil { + return nil, err + } cuo.mutation = mutation node, err = cuo.sqlSave(ctx) mutation.done = true @@ -297,6 +309,14 @@ func (cuo *CardUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (cuo *CardUpdateOne) check() error { + if _, ok := cuo.mutation.OwnerID(); cuo.mutation.OwnerCleared() && !ok { + return errors.New("ent: clearing a required unique edge \"owner\"") + } + return nil +} + func (cuo *CardUpdateOne) sqlSave(ctx context.Context) (c *Card, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/examples/o2o2types/ent/user_create.go b/examples/o2o2types/ent/user_create.go index 86436de4d..9d3d3f233 100644 --- a/examples/o2o2types/ent/user_create.go +++ b/examples/o2o2types/ent/user_create.go @@ -62,14 +62,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -77,6 +77,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -101,7 +104,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if _, ok := uc.mutation.Age(); !ok { return &ValidationError{Name: "age", err: errors.New("ent: missing required field \"age\"")} } @@ -188,13 +192,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/o2o2types/ent/user_update.go b/examples/o2o2types/ent/user_update.go index 73365d616..3f4b92e61 100644 --- a/examples/o2o2types/ent/user_update.go +++ b/examples/o2o2types/ent/user_update.go @@ -83,7 +83,6 @@ func (uu *UserUpdate) ClearCard() *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -276,7 +275,6 @@ func (uuo *UserUpdateOne) ClearCard() *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - var ( err error node *User diff --git a/examples/o2obidi/ent/user_create.go b/examples/o2obidi/ent/user_create.go index efafab911..ee933f5d6 100644 --- a/examples/o2obidi/ent/user_create.go +++ b/examples/o2obidi/ent/user_create.go @@ -61,14 +61,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -76,6 +76,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -100,7 +103,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if _, ok := uc.mutation.Age(); !ok { return &ValidationError{Name: "age", err: errors.New("ent: missing required field \"age\"")} } @@ -187,13 +191,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/o2obidi/ent/user_update.go b/examples/o2obidi/ent/user_update.go index 0f314971f..270ce001c 100644 --- a/examples/o2obidi/ent/user_update.go +++ b/examples/o2obidi/ent/user_update.go @@ -82,7 +82,6 @@ func (uu *UserUpdate) ClearSpouse() *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -275,7 +274,6 @@ func (uuo *UserUpdateOne) ClearSpouse() *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - var ( err error node *User diff --git a/examples/o2orecur/ent/node_create.go b/examples/o2orecur/ent/node_create.go index 7fd17ce82..1d4001d39 100644 --- a/examples/o2orecur/ent/node_create.go +++ b/examples/o2orecur/ent/node_create.go @@ -74,14 +74,14 @@ func (nc *NodeCreate) Mutation() *NodeMutation { // Save creates the Node in the database. func (nc *NodeCreate) Save(ctx context.Context) (*Node, error) { - if err := nc.preSave(); err != nil { - return nil, err - } var ( err error node *Node ) if len(nc.hooks) == 0 { + if err = nc.check(); err != nil { + return nil, err + } node, err = nc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -89,6 +89,9 @@ func (nc *NodeCreate) Save(ctx context.Context) (*Node, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = nc.check(); err != nil { + return nil, err + } nc.mutation = mutation node, err = nc.sqlSave(ctx) mutation.done = true @@ -113,7 +116,8 @@ func (nc *NodeCreate) SaveX(ctx context.Context) *Node { return v } -func (nc *NodeCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (nc *NodeCreate) check() error { if _, ok := nc.mutation.Value(); !ok { return &ValidationError{Name: "value", err: errors.New("ent: missing required field \"value\"")} } @@ -208,13 +212,13 @@ func (ncb *NodeCreateBulk) Save(ctx context.Context) ([]*Node, error) { func(i int, root context.Context) { builder := ncb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*NodeMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/o2orecur/ent/node_update.go b/examples/o2orecur/ent/node_update.go index ec071ad40..68ace7d6a 100644 --- a/examples/o2orecur/ent/node_update.go +++ b/examples/o2orecur/ent/node_update.go @@ -101,7 +101,6 @@ func (nu *NodeUpdate) ClearNext() *NodeUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (nu *NodeUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -341,7 +340,6 @@ func (nuo *NodeUpdateOne) ClearNext() *NodeUpdateOne { // Save executes the query and returns the updated entity. func (nuo *NodeUpdateOne) Save(ctx context.Context) (*Node, error) { - var ( err error node *Node diff --git a/examples/start/ent/car_create.go b/examples/start/ent/car_create.go index ec74e2be0..b374d61fd 100644 --- a/examples/start/ent/car_create.go +++ b/examples/start/ent/car_create.go @@ -63,14 +63,14 @@ func (cc *CarCreate) Mutation() *CarMutation { // Save creates the Car in the database. func (cc *CarCreate) Save(ctx context.Context) (*Car, error) { - if err := cc.preSave(); err != nil { - return nil, err - } var ( err error node *Car ) if len(cc.hooks) == 0 { + if err = cc.check(); err != nil { + return nil, err + } node, err = cc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -78,6 +78,9 @@ func (cc *CarCreate) Save(ctx context.Context) (*Car, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = cc.check(); err != nil { + return nil, err + } cc.mutation = mutation node, err = cc.sqlSave(ctx) mutation.done = true @@ -102,7 +105,8 @@ func (cc *CarCreate) SaveX(ctx context.Context) *Car { return v } -func (cc *CarCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (cc *CarCreate) check() error { if _, ok := cc.mutation.Model(); !ok { return &ValidationError{Name: "model", err: errors.New("ent: missing required field \"model\"")} } @@ -189,13 +193,13 @@ func (ccb *CarCreateBulk) Save(ctx context.Context) ([]*Car, error) { func(i int, root context.Context) { builder := ccb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*CarMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/start/ent/car_update.go b/examples/start/ent/car_update.go index cb6b07560..24a7dfcb3 100644 --- a/examples/start/ent/car_update.go +++ b/examples/start/ent/car_update.go @@ -77,7 +77,6 @@ func (cu *CarUpdate) ClearOwner() *CarUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (cu *CarUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -256,7 +255,6 @@ func (cuo *CarUpdateOne) ClearOwner() *CarUpdateOne { // Save executes the query and returns the updated entity. func (cuo *CarUpdateOne) Save(ctx context.Context) (*Car, error) { - var ( err error node *Car diff --git a/examples/start/ent/group_create.go b/examples/start/ent/group_create.go index b3642c3a8..8d50fa118 100644 --- a/examples/start/ent/group_create.go +++ b/examples/start/ent/group_create.go @@ -52,14 +52,14 @@ func (gc *GroupCreate) Mutation() *GroupMutation { // Save creates the Group in the database. func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { - if err := gc.preSave(); err != nil { - return nil, err - } var ( err error node *Group ) if len(gc.hooks) == 0 { + if err = gc.check(); err != nil { + return nil, err + } node, err = gc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -67,6 +67,9 @@ func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gc.check(); err != nil { + return nil, err + } gc.mutation = mutation node, err = gc.sqlSave(ctx) mutation.done = true @@ -91,7 +94,8 @@ func (gc *GroupCreate) SaveX(ctx context.Context) *Group { return v } -func (gc *GroupCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (gc *GroupCreate) check() error { if _, ok := gc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -172,13 +176,13 @@ func (gcb *GroupCreateBulk) Save(ctx context.Context) ([]*Group, error) { func(i int, root context.Context) { builder := gcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*GroupMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/start/ent/group_update.go b/examples/start/ent/group_update.go index f1d9d6f87..aa934b9e5 100644 --- a/examples/start/ent/group_update.go +++ b/examples/start/ent/group_update.go @@ -81,17 +81,14 @@ func (gu *GroupUpdate) RemoveUsers(u ...*User) *GroupUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (gu *GroupUpdate) Save(ctx context.Context) (int, error) { - if v, ok := gu.mutation.Name(); ok { - if err := group.NameValidator(v); err != nil { - return 0, &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} - } - } - var ( err error affected int ) if len(gu.hooks) == 0 { + if err = gu.check(); err != nil { + return 0, err + } affected, err = gu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -99,6 +96,9 @@ func (gu *GroupUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gu.check(); err != nil { + return 0, err + } gu.mutation = mutation affected, err = gu.sqlSave(ctx) mutation.done = true @@ -136,6 +136,16 @@ func (gu *GroupUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (gu *GroupUpdate) check() error { + if v, ok := gu.mutation.Name(); ok { + if err := group.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} + } + } + return nil +} + func (gu *GroupUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -282,17 +292,14 @@ func (guo *GroupUpdateOne) RemoveUsers(u ...*User) *GroupUpdateOne { // Save executes the query and returns the updated entity. func (guo *GroupUpdateOne) Save(ctx context.Context) (*Group, error) { - if v, ok := guo.mutation.Name(); ok { - if err := group.NameValidator(v); err != nil { - return nil, &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} - } - } - var ( err error node *Group ) if len(guo.hooks) == 0 { + if err = guo.check(); err != nil { + return nil, err + } node, err = guo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -300,6 +307,9 @@ func (guo *GroupUpdateOne) Save(ctx context.Context) (*Group, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = guo.check(); err != nil { + return nil, err + } guo.mutation = mutation node, err = guo.sqlSave(ctx) mutation.done = true @@ -337,6 +347,16 @@ func (guo *GroupUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (guo *GroupUpdateOne) check() error { + if v, ok := guo.mutation.Name(); ok { + if err := group.NameValidator(v); err != nil { + return &ValidationError{Name: "name", err: fmt.Errorf("ent: validator failed for field \"name\": %w", err)} + } + } + return nil +} + func (guo *GroupUpdateOne) sqlSave(ctx context.Context) (gr *Group, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/examples/start/ent/user_create.go b/examples/start/ent/user_create.go index a36bafa54..b36d41f4d 100644 --- a/examples/start/ent/user_create.go +++ b/examples/start/ent/user_create.go @@ -82,14 +82,15 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) + uc.defaults() if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -97,6 +98,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -121,7 +125,16 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// defaults sets the default values of the builder before save. +func (uc *UserCreate) defaults() { + if _, ok := uc.mutation.Name(); !ok { + v := user.DefaultName + uc.mutation.SetName(v) + } +} + +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if _, ok := uc.mutation.Age(); !ok { return &ValidationError{Name: "age", err: errors.New("ent: missing required field \"age\"")} } @@ -131,8 +144,7 @@ func (uc *UserCreate) preSave() error { } } if _, ok := uc.mutation.Name(); !ok { - v := user.DefaultName - uc.mutation.SetName(v) + return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } return nil } @@ -232,14 +244,15 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { for i := range ucb.builders { func(i int, root context.Context) { builder := ucb.builders[i] + builder.defaults() var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/start/ent/user_update.go b/examples/start/ent/user_update.go index e0f011251..5ac4eac41 100644 --- a/examples/start/ent/user_update.go +++ b/examples/start/ent/user_update.go @@ -139,17 +139,14 @@ func (uu *UserUpdate) RemoveGroups(g ...*Group) *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - if v, ok := uu.mutation.Age(); ok { - if err := user.AgeValidator(v); err != nil { - return 0, &ValidationError{Name: "age", err: fmt.Errorf("ent: validator failed for field \"age\": %w", err)} - } - } - var ( err error affected int ) if len(uu.hooks) == 0 { + if err = uu.check(); err != nil { + return 0, err + } affected, err = uu.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -157,6 +154,9 @@ func (uu *UserUpdate) Save(ctx context.Context) (int, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uu.check(); err != nil { + return 0, err + } uu.mutation = mutation affected, err = uu.sqlSave(ctx) mutation.done = true @@ -194,6 +194,16 @@ func (uu *UserUpdate) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (uu *UserUpdate) check() error { + if v, ok := uu.mutation.Age(); ok { + if err := user.AgeValidator(v); err != nil { + return &ValidationError{Name: "age", err: fmt.Errorf("ent: validator failed for field \"age\": %w", err)} + } + } + return nil +} + func (uu *UserUpdate) sqlSave(ctx context.Context) (n int, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ @@ -465,17 +475,14 @@ func (uuo *UserUpdateOne) RemoveGroups(g ...*Group) *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - if v, ok := uuo.mutation.Age(); ok { - if err := user.AgeValidator(v); err != nil { - return nil, &ValidationError{Name: "age", err: fmt.Errorf("ent: validator failed for field \"age\": %w", err)} - } - } - var ( err error node *User ) if len(uuo.hooks) == 0 { + if err = uuo.check(); err != nil { + return nil, err + } node, err = uuo.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -483,6 +490,9 @@ func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uuo.check(); err != nil { + return nil, err + } uuo.mutation = mutation node, err = uuo.sqlSave(ctx) mutation.done = true @@ -520,6 +530,16 @@ func (uuo *UserUpdateOne) ExecX(ctx context.Context) { } } +// check runs all checks and user-defined validators on the builder. +func (uuo *UserUpdateOne) check() error { + if v, ok := uuo.mutation.Age(); ok { + if err := user.AgeValidator(v); err != nil { + return &ValidationError{Name: "age", err: fmt.Errorf("ent: validator failed for field \"age\": %w", err)} + } + } + return nil +} + func (uuo *UserUpdateOne) sqlSave(ctx context.Context) (u *User, err error) { _spec := &sqlgraph.UpdateSpec{ Node: &sqlgraph.NodeSpec{ diff --git a/examples/traversal/ent/group_create.go b/examples/traversal/ent/group_create.go index 40422ee30..bedbaf719 100644 --- a/examples/traversal/ent/group_create.go +++ b/examples/traversal/ent/group_create.go @@ -71,14 +71,14 @@ func (gc *GroupCreate) Mutation() *GroupMutation { // Save creates the Group in the database. func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { - if err := gc.preSave(); err != nil { - return nil, err - } var ( err error node *Group ) if len(gc.hooks) == 0 { + if err = gc.check(); err != nil { + return nil, err + } node, err = gc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -86,6 +86,9 @@ func (gc *GroupCreate) Save(ctx context.Context) (*Group, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = gc.check(); err != nil { + return nil, err + } gc.mutation = mutation node, err = gc.sqlSave(ctx) mutation.done = true @@ -110,7 +113,8 @@ func (gc *GroupCreate) SaveX(ctx context.Context) *Group { return v } -func (gc *GroupCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (gc *GroupCreate) check() error { if _, ok := gc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -205,13 +209,13 @@ func (gcb *GroupCreateBulk) Save(ctx context.Context) ([]*Group, error) { func(i int, root context.Context) { builder := gcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*GroupMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/traversal/ent/group_update.go b/examples/traversal/ent/group_update.go index 46180404c..32f176d57 100644 --- a/examples/traversal/ent/group_update.go +++ b/examples/traversal/ent/group_update.go @@ -106,7 +106,6 @@ func (gu *GroupUpdate) ClearAdmin() *GroupUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (gu *GroupUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -362,7 +361,6 @@ func (guo *GroupUpdateOne) ClearAdmin() *GroupUpdateOne { // Save executes the query and returns the updated entity. func (guo *GroupUpdateOne) Save(ctx context.Context) (*Group, error) { - var ( err error node *Group diff --git a/examples/traversal/ent/pet_create.go b/examples/traversal/ent/pet_create.go index 1d1c3fa4c..d66d6a1d4 100644 --- a/examples/traversal/ent/pet_create.go +++ b/examples/traversal/ent/pet_create.go @@ -71,14 +71,14 @@ func (pc *PetCreate) Mutation() *PetMutation { // Save creates the Pet in the database. func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { - if err := pc.preSave(); err != nil { - return nil, err - } var ( err error node *Pet ) if len(pc.hooks) == 0 { + if err = pc.check(); err != nil { + return nil, err + } node, err = pc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -86,6 +86,9 @@ func (pc *PetCreate) Save(ctx context.Context) (*Pet, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = pc.check(); err != nil { + return nil, err + } pc.mutation = mutation node, err = pc.sqlSave(ctx) mutation.done = true @@ -110,7 +113,8 @@ func (pc *PetCreate) SaveX(ctx context.Context) *Pet { return v } -func (pc *PetCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (pc *PetCreate) check() error { if _, ok := pc.mutation.Name(); !ok { return &ValidationError{Name: "name", err: errors.New("ent: missing required field \"name\"")} } @@ -205,13 +209,13 @@ func (pcb *PetCreateBulk) Save(ctx context.Context) ([]*Pet, error) { func(i int, root context.Context) { builder := pcb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*PetMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/traversal/ent/pet_update.go b/examples/traversal/ent/pet_update.go index 0bbfed217..f3635fbde 100644 --- a/examples/traversal/ent/pet_update.go +++ b/examples/traversal/ent/pet_update.go @@ -106,7 +106,6 @@ func (pu *PetUpdate) ClearOwner() *PetUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (pu *PetUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -362,7 +361,6 @@ func (puo *PetUpdateOne) ClearOwner() *PetUpdateOne { // Save executes the query and returns the updated entity. func (puo *PetUpdateOne) Save(ctx context.Context) (*Pet, error) { - var ( err error node *Pet diff --git a/examples/traversal/ent/user_create.go b/examples/traversal/ent/user_create.go index 5148c8286..e4ff4fcd9 100644 --- a/examples/traversal/ent/user_create.go +++ b/examples/traversal/ent/user_create.go @@ -104,14 +104,14 @@ func (uc *UserCreate) Mutation() *UserMutation { // Save creates the User in the database. func (uc *UserCreate) Save(ctx context.Context) (*User, error) { - if err := uc.preSave(); err != nil { - return nil, err - } var ( err error node *User ) if len(uc.hooks) == 0 { + if err = uc.check(); err != nil { + return nil, err + } node, err = uc.sqlSave(ctx) } else { var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { @@ -119,6 +119,9 @@ func (uc *UserCreate) Save(ctx context.Context) (*User, error) { if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err = uc.check(); err != nil { + return nil, err + } uc.mutation = mutation node, err = uc.sqlSave(ctx) mutation.done = true @@ -143,7 +146,8 @@ func (uc *UserCreate) SaveX(ctx context.Context) *User { return v } -func (uc *UserCreate) preSave() error { +// check runs all checks and user-defined validators on the builder. +func (uc *UserCreate) check() error { if _, ok := uc.mutation.Age(); !ok { return &ValidationError{Name: "age", err: errors.New("ent: missing required field \"age\"")} } @@ -287,13 +291,13 @@ func (ucb *UserCreateBulk) Save(ctx context.Context) ([]*User, error) { func(i int, root context.Context) { builder := ucb.builders[i] var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - if err := builder.preSave(); err != nil { - return nil, err - } mutation, ok := m.(*UserMutation) if !ok { return nil, fmt.Errorf("unexpected mutation type %T", m) } + if err := builder.check(); err != nil { + return nil, err + } builder.mutation = mutation nodes[i], specs[i] = builder.createSpec() var err error diff --git a/examples/traversal/ent/user_update.go b/examples/traversal/ent/user_update.go index d28d4ffe8..4b6f0da1e 100644 --- a/examples/traversal/ent/user_update.go +++ b/examples/traversal/ent/user_update.go @@ -203,7 +203,6 @@ func (uu *UserUpdate) RemoveManage(g ...*Group) *UserUpdate { // Save executes the query and returns the number of rows/vertices matched by this operation. func (uu *UserUpdate) Save(ctx context.Context) (int, error) { - var ( err error affected int @@ -696,7 +695,6 @@ func (uuo *UserUpdateOne) RemoveManage(g ...*Group) *UserUpdateOne { // Save executes the query and returns the updated entity. func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) { - var ( err error node *User